氣泡排序屬於一種典型的交換排序。
交換排序顧名思義就是通過元素的兩兩比較,判斷是否符合要求,如過不符合就交換位置來達到排序的目的。氣泡排序名字的由來就是因為在交換過程中,類似水冒泡,小(大)的元素經過不斷的交換由水底慢慢的浮到水的頂端。
氣泡排序的思想就是利用的比較交換,利用迴圈將第 i 小或者大的元素歸位,歸位操作利用的是對 n 個元素中相鄰的兩個進行比較,如果順序正確就不交換,如果順序錯誤就進行位置的交換。通過重複的迴圈訪問陣列,直到沒有可以交換的元素,那麼整個排序就已經完成了。
一次排序的時間複雜度為 o(n),共需要n-1次排序,時間複雜度為 o(n^2),空間複雜度 o(1);
注:優化,設定乙個標識位,如果一趟排序的過程中存在交換,則更改標識位,下次排序繼續,若不存在交換,則排序終止,得到想要的序列;
詳解:它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的乙個元素,存放待排序序列的起始位置(或末尾位置),直到全部待排序的資料元素排完。
由於選擇排序一次能確定乙個元素的位置,所以選擇排序需要迴圈size-1次。
(演算法不穩定,會改變原有順序)
時間複雜度類似氣泡排序 o(n^2),空間複雜度 o(1);
排序演算法小結
1 快速排序 quicksort 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面四步組成。1 如果不多於1個資料,直接返回。2 一般選擇序列最左邊的值作為支點資料。3 將序列分成2部分,一部分都大於支點資料,另外一部分都小於支點資料。4...
排序演算法小結
1 歸併排序 3.區別與聯絡 遞迴是從未知推到已知,相當於把未知的東西壓入棧,等到可以算出結果了,就一步一步出棧。迭代是從已知到未知,從已知的東西一步一步推至目標。遞迴與迭代就好像一對逆元。遞迴的 更加清晰,但開銷更大,也更容易出錯,除錯較困難 而迭代的 編寫更困難,但速度和開銷較小。4.空間占用 ...
排序演算法小結
演算法過程 假設乙個無序的序列,該演算法將其分成兩部分,前一部分已經完成排序 有序,一開始時只有乙個元素 後一部分任然無序,將後面序列選擇第乙個插入到前面的有序序列,如此直到所有完全有序。複雜度 最簡單的即為,整個序列原來即有序,按照一種最 省事 的方式,我們僅需比較n 1次即可。最複雜的情況,應該...