對於排序的演算法,其實之前也看過,但是講真用的比較少在平常開發中。所以,每次回憶起,需要看其他書籍或文章感覺也是一件麻煩的事。還是自己記一下吧~
陣列排序的方法:
氣泡排序
選擇排序
插入排序
歸併排序
快速排序
計數排序
桶排序基數排序
比較常見的還是氣泡排序、選擇排序、快速排序,所以這次只總結這三種排序方法的原理和使用。
在排序演算法中,最簡單就是氣泡排序,但是其效能也是最差的(時間複雜度o(n^2))。其實現原理是比較陣列中所有相鄰的兩項,如果前一項大於後一項,則交換兩者位置,只到比較完最後兩項為之,而它也由於一直向上移動元素,則被稱為冒泡。
function
bubblesort
(arr)}}
return arr
}
選擇排序顧名思義,就是選出陣列中的最小項拍到第一位,然後繼續找剩餘陣列項中的最小項,排到第二項,以此類推。
function
selectionsort
(arr)
} temp = arr[i]
arr[i]
= arr[minindex]
arr[minindex]
= temp
}return arr
}
相比較前兩種排序演算法,快速排序則顯得比較高階一點點。它的原理是先在陣列中選取乙個基準(benchmark),然後將小於基準的放到陣列的左邊,大於等於基準的放到陣列的右邊,不斷遞迴左右兩邊的陣列,並將它們和基準相連線構成乙個新的陣列。
function
quicksort
(arr)
else
}return
quicksort
(left)
.concat
(right,
quicksort
(right)
)}
資料結構 排序
小小總結了下 希望別不記得 排序型別 排序方法 平均時間 最壞時間 最好時間 穩定空間 插入直接插入 o n2 o n2 o n 穩定o 1 希爾排序 o n3 2 增量序列最後為1,只有公因子1 不穩o 1 選擇簡單選擇 o n2 o n2 o n 穩定o 1 堆排序o n lb n o n lb...
資料結構 排序
郝斌版 資料結構 學習筆記 冒泡 公升序,12比,大放後面,再23比,直至最大的在最後面 插入 2,3,4,依次插入值,保證插入值後的序列為有序的 選擇 後面所有的最小值依次排到最前 快速排序 歸併排序 22排,44排,88排.排序演算法標準 時間,空間,穩定性 排序和查詢的關係 排序是查詢的前提,...
資料結構 排序
1.希爾排序 shellsort 增量序列d n為要排序數的個數 void shellinsertsort int a,int n,int dk n個要排序的數,dk是增量 2 堆排序 已知h s m 除了h s 外均滿足堆的定義 調整h s 使其成為大頂堆.即將對第s個結點為根的子樹篩選,para...