深入理解選擇排序

2021-09-27 12:59:20 字數 1093 閱讀 7858

選擇,選擇,就是先選擇好了,再交換。

氣泡排序的思路:給定乙個陣列,每次迴圈以此找到最小的數的下標,最後與相應的下標的值交換。

平均時間複雜度:o(n^2)

最好情況:o(n^2) 已經排好序

最壞情況:o(n^2) 倒敘的時候

空間複雜度:o(1) 沒有占用額外的空間

穩定性:不穩定 排序前相等的兩個數,排序後位置改變

: ) 選擇排序值得注意的是:先儲存下下標再進行交換。

**如下

**解析:定義乙個儲存每次迴圈最小值下標變數

第一層迴圈一共迴圈length-1,可以理解為對length-1個都迴圈完了,最後乙個數自然而然不需要判斷了。

第二層迴圈目的是找到此次迴圈的最小數,並將下標儲存到剛定義的變數中

最後將這個中間下標的值與外層i下標的值交換,完成一次內部迴圈。

理解:選擇排序核心思想是利用乙個中間下標變數儲存每次迴圈選擇出的最小值,而不再是每次遇到最小值就使用交換,這樣在普遍情況下可以減少交換賦值的開銷。

平時我經常寫的排序

它與選擇排序的區別:平時寫的排序,會使用更多的交換,而大多數的交換都是不必要的,如下圖。

這個結果很容易看出來,選擇排序相對來說謹慎得多,它只有找打想要的元素之後才會呼叫swap。

深入理解希爾排序

希爾排序是按照不同步長對元素進行分組插入排序的,當剛開始元素很無序的時候,步長最大,所以插入排序的元素個數很少,速度很快 當元素基本有序了,步長很小,插入排序對於有序的序列效率很高。所以,希爾排序的時間複雜度會優於o n 2 具體實現 如下,先看一種複雜一點的,但是便於理解的實現 for int i...

深入理解快速排序

快速排序分為兩部分 2,快排函式本身,通過遞迴呼叫自身,每次呼叫可以使乙個元素回歸正確的位置,並使該元素之前的元素都小於該元素,之後的元素都大於該元素 遞迴的退出條件是base top 這樣,我們可以最後把整個數列割到最小兩個元素的子列,再使子列有序,從而整個數列都有序。值得注意的是,快排不會使某個...

mysql order by排序深入理解

mysql 排序篇 mysql 排序,如果從比較深入的角度來討論這個命題,這一節完全可以出一本書。在這裡我們只做簡單介紹。mysql排序,這個動作會出現在兩個兩個地方,乙個是記憶體,另乙個是磁碟檔案。由關鍵字order by 驅動。具體的排序條件根據結果集的字段決定。1 mysql 排序的演算法 m...