1. 程式人生 > 其它 >python演算法(二):選擇排序

python演算法(二):選擇排序

技術標籤:Python演算法python選擇排序演算法

python 演算法(二):選擇排序

演算法分析

仍然是排序演算法,並且與氣泡排序堪稱雙生兄弟.邏輯基本一樣,唯一不同的時,氣泡排序實行,見一個愛一個的渣男邏輯,而選擇排序是一個謀定後而動的狠角.
示例:
3 2 5 7 1 4 6
按從小到大排序
從第一個數開始
3 記錄索引 0
3 > 2,記錄索引 1
2 < 5 不操作
2 < 7 不操作
2 >1 記錄索引 4
1 <4 不操作
1<6 不操作
最終索引記錄為4
交換第一個數與第五個(索引是4)的兩個數的位置
第一輪:
1 2 5 7 3 4 6

以此繼續第二個數
2 索引記錄 1
2<5 不操作
2 < 7 不操作
2 < 3 不操作
2 < 4 不操作
2 < 6 不操作
自己與自己交換(可以增加一個判斷要不要交換)
第二輪:
1 2 5 7 3 4 6

程式碼:


# coding = "utf-8"

# 作者: 愛程式設計的章老師
# 時間: 2021年1月30日

"""[選擇排序]"""
    
def selection_sort(num_list:list):
    for i in range(len(num_list)
-1): temp = i for j in range(i + 1, len(num_list)): if num_list[temp] > num_list[j]: temp = j num_list[i], num_list[temp] = num_list[temp], num_list[i] num_list_demo = [3, 2, 5, 7, 1, 4, 6] print(num_list_demo) selection_sort(num_list_demo) print
(num_list_demo)

執行結果

在這裡插入圖片描述

後記

在排序這個問題上,前輩們一直在努力,尋找更加高效,高加優秀的排序演算法.
作為演算法的入門案例.
即要學會相應的演算法,也要努力去思考前輩們思考的邏輯.學會用解決問題的邏輯去思考問題.這才是我們學習演算法的最根本目的,而不僅僅是針對某一個演算法