使用python實現8大排序演算法 插入排序

2021-08-27 22:11:35 字數 841 閱讀 5115

插入排序的基本思想:

每步將乙個待排序的紀錄,按其關鍵碼值的大小插入前面已經排序的檔案中適當位置上,直到全部插入完為止。

例:

arr = [49,38,04,97,76,13,27,49,55,65],從第2個數為關鍵值,向前比較,如前乙個數大,進行交換,

arr = [38,49,04,97,76,13,27,49,55,65],然後再從第3個數為關鍵值,向前比較,前大則交換,

arr = 

[38,04,49,97,76,13,27,49,55,65],再繼續,

arr = 

[04,

38,49,97,76,13,27,49,55,65]

備註:依次向前比較時,因為前面的陣列是有序的,所以當前乙個數小於或等於key值時,可以跳出這個向前比較的迴圈,演算法的速度有明顯提公升。

**:

def insert_sort(lists):

#插入排序

count = len(lists)

for i in range(1,count):#從第2個數起遍歷

key = lists[i]

j = i - 1

while j >= 0:

if lists[j] > key:

lists[j+1], lists[j] = lists[j], key

else: break #當前乙個數小於或等於key時,跳出迴圈

j -= 1

return lists

8大排序總結

include includeusing namespace std void select sort vector a 選擇排序 非穩定 void bubble sort vector a 氣泡排序 void insert sort vector a 插入排序 有序最快 void shell so...

8大排序演算法

一 各個排序演算法的過程 1 直插入排序 乙個個的進行插入,直到有序序列。穩定的。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。具體實現 如下 時間複雜度 o n 2 void insertsort int a,int n 3 選擇排序 按大小順序一次選出,進行公升降排列。在要排序的一組數中,選出...

8大排序整理

2.選擇排序 3.插入排序 4.歸併排序 5.基數排序 最快平均 最慢空間複雜度 穩定性複雜性 o n o n2 o n2 o 1 穩定簡單 氣泡排序是一種用時間換空間的排序方法 最壞情況是把順序的排列變成逆序,或者把逆序的數列變成順序,最差時間複雜度o n 2 只是表示其操作次數的數量級。最好的情...