如果資料按照一定的順序進行排序,資料處理的效率將顯著的提高。演算法是程式設計的精髓,乙個高效
而合適的演算法能極大的減少時間消耗與空間消耗,提到「合適」是因為沒有哪個演算法可以在所有情況下都表現出色,同樣是排序,在不同資料規模下各種排序演算法有不同的效能表現,選擇合適的解決演算法的才能最大限度地提高效率。
1.冒泡演算法bubblesort是常用排序演算法之一,它的核心是讓大(或小)的資料像水泡一樣冒到最上端,這是通過不斷地比較兩個相鄰資料的大小,前者大於後者則交換位置來實現冒泡。
如下示例:
**如下:
依次類推,效果猶如把最大數「冒」上去。
需要注意的細節是,對於n個資料,只需要排n-1次,故控制排序遍數的i起始值為1而不是0.在每次排序中,上次排好的數不需要再進行比較,故控制每次排序結束位置變了j的上限是num-i,隨著排序次數i增加,需要排序的位置越靠前。
1234567
891011
1213
14
void來自code的**片bubblesort
(int
array
,int
num)}}
}
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).
排序演算法之氣泡排序
參考 氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。若...
排序演算法之氣泡排序
對於大多數學計算機的人來說,氣泡排序應該都是接觸的第一種排序方式,氣泡排序的排序思想是比較簡單的,它的演算法的是 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了...
排序演算法之氣泡排序
氣泡排序 bubble sort 是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越大的元素會經由交換慢慢 浮 到數列的頂端,...