20191209 八大排序之選擇排序

2022-07-20 08:39:16 字數 572 閱讀 6102

選擇排序的演算法核心思想是從陣列中選擇最小的元素,放到第乙個位置,再從陣列中選擇第二小的元素放到第二個位置,一直到陣列的最後乙個元素為止。具體邏輯如下:

選擇陣列的第一小的元素,將其放在第乙個位置

選擇陣列的第二小的元素,將其放在第二個位置

。。。選擇陣列的第三小的元素,將其放在第n個位置

def selectsort(arr):

result =

roundcount = len(arr)

for i in range(roundcount):

min_val_index = i#每一次都查詢陣列的最小值的索引

for j in range(i+1,len(arr)):

if arr[j]使用2層for迴圈,外層迴圈控制查詢第幾小的元素,用於真正的查詢,當內層迴圈找到第n小的元素的時候,將其放置在第n個位置。當所有的元素都放置結束後,排序結束。

選擇排序時間複雜度是0( n2),選擇排序是一種不穩定排序,舉個例子,序列5 8 5 2 9,我們知道第一遍選擇第1個元素5會和2交換,那麼原序列中兩個5的相對前後順序就被破壞了,所以選擇排序是乙個不穩定的排序演算法。

20191209 八大排序之氣泡排序

在陣列arr n 中,從第乙個數開始,拿arr i 和後面的數arr i 1 進行比較,如果arr i 比後面的大,就交換兩個數的位置,這樣遍歷一遍陣列後,把最大的資料排在了最後面,之後繼續迴圈排剩下的n 1個數,直到完成所有的排序,由於每次都是把最大的排到最後面,就好像冒泡一樣,故取名氣泡排序,具...

20191209 八大排序之基數排序

基數排序 radix sort 是一種只適用於數字或字母型別的排序方法,它檢查數字或字母的每一位,將之分類,按照位數的特定順序,來將元素排列。以數字為例,將所有元素按照個位數字分類,分類好後,將個位數字大小排列組合起來,再按照十位數字分類,再按照數字大小排列組合起來,一直到最大數字為止。基數排序的方...

八大排序之選擇排序

個人部落格 建議先看排序綜述,傳送門 資料結構與演算法系列之一 八大排序綜述。選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末...