演算法 排序之選擇排序

2021-08-19 15:31:46 字數 1157 閱讀 5263

選擇排序(selection sort)是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

選擇排序的主要優點與資料移動有關。如果某個元素位於正確的最終位置上,則它不會被移動。選擇排序每次交換一對元素,它們當中至少有乙個將被移到其最終位置上,因此對n個元素的表進行排序總共進行至多n-1次交換。在所有的完全依靠交換去移動元素的排序方法中,選擇排序屬於非常好的一種。

實現過程:

實現**如下:

defselect_sort(a_list):

"""選擇排序"""

n = len(a_list)

forj

inrange(0

, n-2):

min_index = j

foriinrange(j+1

, n):

ifa_list[min_index] > a_list[i]:

min_index = i

a_list[j], a_list[min_index] = a_list[min_index], a_list[j]

if__name__ == "__main__":

list1 = [12, 4

, 654

, 53

, 90

, 489

, 23, 1

, 0]

print("排序之前:%s"%list1)

select_sort(list1)

print("排序之後:%s"%list1)

執行結果:

排序之前:[12, 4, 654, 53, 90, 489, 23, 1, 0]

排序之後:[0, 1, 4, 12, 23, 53, 90, 654, 489]

程序已結束,退出**0

排序演算法 排序演算法之選擇排序

最近在學習排序演算法,就排序演算法中的四大經典排序 氣泡排序 快速排序 選擇排序 插入排序。會出一系列的講解排序演算法的部落格。今天繼快速排序之後整理一下選擇排序。選擇排序,就是從一列未排序的陣列中先選出最小 最大 的數,放在陣列的第一位,第一位原來的數字放在最小的原來的位置,再選出第二小的數,放在...

排序演算法之選擇排序 選擇排序 堆排序

直接選擇排序 如下 下面 是一次迴圈同時挑選出最大和最小數,並將其與左右交換 選擇排序 void selectionsort int a,int len swap a min a left 如果最大數的下標在為left,證明要交換的最大數已經被 換到min小標所表示的位置,只需要將right和min...

排序演算法之選擇排序

選擇排序 在乙個長度為n的無序陣列中,在第一趟遍歷n個資料,找出其中最小的數值與第乙個元素交換,第二趟遍歷剩下的n 1個資料,找出其中最小的數值與第二個元素交換.第n 1趟遍歷剩下的2個資料,找出其中最小的數值與第n 1個元素交換,至此選擇排序完成。平均時間複雜度 o n2 空間複雜度 o 1 用於...