選擇排序
遍歷陣列,遍歷到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...