各種排序演算法比較和總結

2021-10-09 19:33:01 字數 941 閱讀 9465

選擇排序

遍歷陣列,遍歷到i時,a0,a1...ai-1是已經排好序的,將ai從ai-1開始向前和每個比較大小,如果小於,則將此位置元素向後移動,繼續向前比較,如果不小於,則放到正在比較的元素之後。從演算法思想可以看出,當相等元素比較時,原來靠後的元素經過比較後還是在後邊,所以插入排序是穩定的
def

insertionsort

(arr)

:for i in

range(1

,len

(arr)):

#第乙個元素本來就是有序所以從arr[1]開始比較

key=arr[i]

j=i-

1while j>=

0and key: arr[j+1]

=arr[j]

j-=1 arr[j+1]

=key

遍歷陣列,遍歷到i時,a0,a1...ai-1是已經排好序的,然後從i到n選擇出最小的,記錄下位置,如果不是第i個,則和第i個元素交換,此時第i個元素可能會排到相等元素之後,造成排序的不穩定
def

selectionsort

(arr)

:for i in

range

(len

(arr)):

min=i

for j in

range

(i+1

,len

(arr)):

if arr[j]

min]

:min

=j temp=arr[i]

arr[i]

=arr[

min]

arr[

min]

=temp

各種排序演算法總結和比較

各種排序演算法的總結和比較 1 快速排序 quicksort 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面四步組成。1 如果不多於 1個資料,直接返回。2 一般選擇序列最左邊的值作為支點資料。3 將序列分成 2部分,一部分都大於支點資...

各種排序演算法的總結和比較

1 快速排序 quicksort 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面四步組成。1 如果不多於1個資料,直接返回。2 一般選擇序列最左邊的值作為支點資料。3 將序列分成2部分,一部分都大於支點資料,另外一部分都小於支點資料。4...

各種排序演算法的總結和比較

1 快速排序 quicksort 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面四步組成。1 如果不多於1個資料,直接返回。2 一般選擇序列最左邊的值作為支點資料。3 將序列分成2部分,一部分都大於支點資料,另外一部分都小於支點資料。4...