氣泡排序可能非你所想。氣泡排序的思路:給定乙個陣列,每次迴圈出最大的數依次向後排,並將較小的數向前冒。
平均時間複雜度:o(n^2)
最好情況:o(n) 已經排好序
最壞情況:o(n^2) 倒敘的時候
空間複雜度:o(1) 沒有占用額外的空間
穩定性:穩定 排序前相等的兩個數,排序後位置不變
: ) 氣泡排序值得注意的是:第一層迴圈並不參加比較,而僅僅是為了迴圈計數。
**如下
**解析:一. 氣泡排序的第一層迴圈的i,並不會參加排序運算,而僅僅是為了迴圈計數本身。
二. 第一層迴圈迴圈一共length-1次,所以當for(int i=1… 那麼 i
三. 第二層c迴圈的迴圈數受到第一層迴圈i的影響,它迴圈多少次呢?
理解:
可以這樣理解,你不是要排序length個數嘛? 冒泡冒泡,就是要將length個數,挨個兒冒出來,一共length個數,你也應該知道每次咱只能冒乙個,那麼也就是說要冒length次,真是length次嘛?當然,想法是這樣,只是現實的情況是,當你將length-1個都冒出來之後,最後乙個難道還需要冒嗎?大不必要,也沒實際效果,你可以理解為,最後乙個被擠出來了。
另外一種寫法
氣泡排序深入理解
她到目前為止最喜歡的演算法是 氣泡排序 這是bessie的對長度為n的陣列a進行排序的奶牛碼實現。sorted false while not sorted sorted true moofor i 0 to n 2 if a i 1 a i swap a i a i 1 sorted false顯...
深入理解希爾排序
希爾排序是按照不同步長對元素進行分組插入排序的,當剛開始元素很無序的時候,步長最大,所以插入排序的元素個數很少,速度很快 當元素基本有序了,步長很小,插入排序對於有序的序列效率很高。所以,希爾排序的時間複雜度會優於o n 2 具體實現 如下,先看一種複雜一點的,但是便於理解的實現 for int i...
深入理解快速排序
快速排序分為兩部分 2,快排函式本身,通過遞迴呼叫自身,每次呼叫可以使乙個元素回歸正確的位置,並使該元素之前的元素都小於該元素,之後的元素都大於該元素 遞迴的退出條件是base top 這樣,我們可以最後把整個數列割到最小兩個元素的子列,再使子列有序,從而整個數列都有序。值得注意的是,快排不會使某個...