演算法 排序之一 氣泡排序

2021-06-21 03:40:51 字數 1309 閱讀 7477

如果資料按照一定的順序進行排序,資料處理的效率將顯著的提高。演算法是程式設計的精髓,乙個高效

而合適的演算法能極大的減少時間消耗與空間消耗,提到「合適」是因為沒有哪個演算法可以在所有情況下都表現出色,同樣是排序,在不同資料規模下各種排序演算法有不同的效能表現,選擇合適的解決演算法的才能最大限度地提高效率。

1.冒泡演算法bubblesort是常用排序演算法之一,它的核心是讓大(或小)的資料像水泡一樣冒到最上端,這是通過不斷地比較兩個相鄰資料的大小,前者大於後者則交換位置來實現冒泡。

如下示例:

**如下:

依次類推,效果猶如把最大數「冒」上去。

需要注意的細節是,對於n個資料,只需要排n-1次,故控制排序遍數的i起始值為1而不是0.在每次排序中,上次排好的數不需要再進行比較,故控制每次排序結束位置變了j的上限是num-i,隨著排序次數i增加,需要排序的位置越靠前。

123

4567

891011

1213

14

voidbubblesort(

intarray,

intnum)

}

}

}

bubblesort.c

2.

時間複雜度

氣泡排序的主要時間消耗是比較,第一趟序比較n-1次,隨後依次遞減n-2....1,則總比較(n-1)+(n-2)+...+3+2+1=(n*2-n)/2,故其時間複雜度為o(n*2).

3.空間複雜度

整個排序過程需要乙個temp的空間用於交換資料,故為空間複雜度為o(1).

基本排序演算法 之一 氣泡排序

templatevoid bubblesort t arr,int len 未改進的氣泡排序,最好,最壞以及平均情況下的時間複雜度均為o n 2 排序過程可能在k k n 1 次外迴圈後已經達到有序狀態,但該演算法仍然會繼續比較相鄰元素,直到n 1次外迴圈結束。基於以上考慮,提出改進的氣泡排序演算法...

排序演算法之一 氣泡排序 C 版本

1.初始版本void bubblesort init int pdata,int size 每一輪結束之後,如果這輪中沒有進行一次資料交換,表明陣列已經有序,無需再進行操作。2.改進版本void bubblesort advance int pdata,int size if hasswap bre...

排序演算法之一 氣泡排序 選擇排序 插入排序

1.氣泡排序 原理 比較兩個相鄰的元素,將值大的元素交換至右端。複雜度 o n n 思路 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放...