常見演算法之 插入類排序

2022-09-15 11:24:20 字數 980 閱讀 5295

插入類排序:

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

1.直接插入排序

1.演算法思想:從待排序的第n個記錄中的第二個記錄開始,依次與前面的記錄比較並尋找插入的位置,每次外迴圈結束後,將當前的數插入到合適的位置。

2.**:  

def insert_sort(array):

n=len(array)

for i in range(1,n):

if array[i]temp:

array[j+1]=array[j]

index[j] #記錄待插入下標

else:

break

array[index]=temp

return array

2.shell排序(希爾排序):

1.原理:是對相鄰指定距離(稱為增量)的元素進行比較,並不斷把增量縮小至1,完成排序。

shell排序時,開始時增量比較大,分組較多,每組的記錄數目較少,用此,在各組內採用直接插入排序較快,後來增量di逐漸縮小,分組數減少,各組的記錄數增多,

但由於按(di-1)分組排序,檔案較接近於有序狀態,所以新的一趟排序過程較快,因此shell排序在效率上比直接插入排序有較大的改進。

2.**:   

def shellsort(nums):

step=len(nums)//2 #設定步長

while step>0:

for i in range(step,len(nums)):

while i>=step and nums[i-step]>nums[i]: #類似插入排序,當前值與指定步長之間的值比較

符合條件則交換位置

nums[i],nums[i-step]=muns[i-step],mums[i]

i-=step

return nums

常見排序演算法之插入排序

目錄 一 簡介 二 排序思路 三 演算法實現 四 原理分析 插入排序,就是假定乙個參考值,假設該參考值左邊的元素都有序,那麼從該元素開始從後往前挨個查詢,如果找到比參考值大的數,那麼就將這個大的數後移,如果未找到比參考值大的數,說明不用移動元素。迴圈比較,經過比較後移之後就會空出乙個位置,用於存放這...

常見排序演算法之插入排序

把陣列分為有序部分與無序部分,當乙個陣列排序時,第 0 位置上為有序部分,其餘部分為無序部分,詳細見下面 然後讓無序部分插敘有序部分,先讓有序部分最後乙個與無序部分第乙個比較,如果條件滿足 大,或者小 就交換位置,然後依次與有序部分倒數第二個繼續比較,直到不需要交換位置。這樣組成了新的有序部分與部分...

常見的排序演算法之插入排序

排序演算法是在資料結構中十分常見的操作,每種排序演算法都有不同的特點,接下來我們學習以下常用的排序演算法 插入排序。插入排序可以分為直接插入排序和希爾排序。當插入第i i 1 個元素時,前面的array 0 array 1 array i 1 已經排好序,此時用array i 的排序碼與array ...