排序(冒泡 插入)

2021-10-19 14:47:28 字數 1232 閱讀 2423

1 、最好情況、最壞情況、平均情況時間複雜度

2、時間複雜度的係數、常數 、低階

3、比較次數和交換(或移動)次數

例子:比如我們有一組資料 2,9,3,4,8,3,按照大小排序之後就是 2,3,3,4,8,9

這組資料裡有兩個 3。經過某種排序演算法排序之後,如果兩個 3 的前後順序沒有改變,那我們就把這種排序演算法叫作穩定的排序演算法;如果前後順序發生變化,那對應的排序演算法就叫作不穩定的排序演算法

穩定性意義:可針對物件的多種屬性進行有優先順序的排序

電商訂單:按照金額大小對訂單資料排序,對於相同金額的訂單以下單時間早晚排序

原地排序:空間複雜度是 o(1) 的排序演算法

二 、氣泡排序

氣泡排序只會操作相鄰的兩個資料,相鄰兩個元素進行比較。一次冒泡會讓至少乙個元素移動到它應該在的位置,重複 n 次,就完成了 n 個資料的排序工作

// 氣泡排序,a表示陣列,n表示陣列大小

public void bubblesort(int[

] a, int n)}if

(!flag)

break

; // 沒有資料交換,提前退出

}}

有序元素對:a[i]

<= a[j], 如果i < j。

逆序元素對:a[i]

> a[j], 如果i < j。

完全有序的陣列的有序度叫作滿有序度。逆序度 = 滿有序度 - 有序三、插入排序

氣泡排序中資料的交換操作:

if(a[j]

> a[j+1]

)插入排序中資料的移動操作:

if(a[j]

> value)

else

插入 氣泡排序

插入排序偽 insertion sort a for j 2 to length a do key a j insert a j into the sorted sequence a 1.j 1 i j 1 while i 0 and a i key doa i 1 a i i i 1 a i 1 ...

氣泡排序,插入排序

前提 void x sort elementtype a,int n 大多數情況下,為簡單起見,討論從小大的整數排序 n是正整數 只討論基於比較的排序 有定義 只討論內部排序 穩定性 任意兩個相等的資料,排序前後的相對位置不發生改變 沒有一種排序是任何情況下 都表現最好的 氣泡排序 void bub...

氣泡排序 插入排序

學習思路 思路講解 實現 1 通過雙重迴圈,相鄰兩個資料做對比,通過位置交換使其變得有序 2 時間複雜度 分析 解釋 外部迴圈從0開始i 內部迴圈從0開始j,完整迴圈後會將本次最大值放入陣列最後,下次迴圈可忽略相應的尾部資料 length i 1 重複1 2步即可完成排序 實現 public cla...