【演算法-排序之一】氣泡排序
演算法-排序之氣泡排序
如果資料按照一定的順序進行排序,資料處理的效率將顯著的提高。演算法是程式設計的精髓,一個高效而合適的演算法能極大的減少時間消耗與空間消耗,提到“合適”是因為沒有哪個演算法可以在所有情況下都表現出色,同樣是排序,在不同資料規模下各種排序演算法有不同的效能表現,選擇合適的解決演算法的才能最大限度地提高效率。
1.冒泡演算法BubbleSort是常用排序演算法之一,它的核心是讓大(或小)的資料像水泡一樣冒到最上端,這是通過不斷地比較兩個相鄰資料的大小,前者大於後者則交換位置來實現冒泡。
如下示例:
圖解如下:
排序一遍後變成
依次類推,效果猶如把最大數“冒”上去。
需要注意的細節是,對於n個資料,只需要排n-1次,故控制排序遍數的i起始值為1而不是0.在每次排序中,上次排好的數不需要再進行比較,故控制每次排序結束位置變了j的上限是num-i,隨著排序次數i增加,需要排序的位置越靠前。
void BubbleSort(int Array[],int num){
int i; //i控制排序的遍數
int j; //j控制每次排序結束的位置
int temp;
for(i=0;iArray[j]){
temp=Array[j-1];
Array[j-1]=Array[j];
Array[j]=temp;
}
}
}
}
氣泡排序的主要時間消耗是比較,第一趟序比較n-1次,隨後依次遞減n-2....1,則總比較(n-1)+(n-2)+...+3+2+1=(n*2-n)/2,故其時間複雜度為O(n^2).
3.空間複雜度
整個排序過程需要一個temp的空間用於交換資料,故為空間複雜度為O(1).
相關文章
- 排序演算法–氣泡排序排序演算法
- 排序演算法__氣泡排序排序演算法
- 排序演算法--氣泡排序排序演算法
- 排序演算法-氣泡排序排序演算法
- 排序演算法——氣泡排序排序演算法
- 排序——氣泡排序排序
- 氣泡排序演算法排序演算法
- 演算法:氣泡排序演算法排序
- Java排序演算法之氣泡排序Java排序演算法
- 排序演算法-氣泡排序(Bubble Sort)排序演算法
- 排序演算法 - 氣泡排序和選擇排序排序演算法
- 排序:氣泡排序&快速排序排序
- 演算法導論學習之一:氣泡排序演算法排序
- 排序之氣泡排序排序
- 9. 氣泡排序,以及如何優化氣泡排序,氣泡排序屬於插入排序排序優化
- #排序演算法#【1】概述、氣泡排序、選擇排序排序演算法
- 氣泡排序排序
- 排序:交換排序——氣泡排序法排序
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- 基本排序之氣泡排序排序
- 【排序演算法動畫解】排序介紹及氣泡排序排序演算法動畫
- Python之排序演算法:快速排序與氣泡排序Python排序演算法
- 深入淺出的排序演算法-氣泡排序排序演算法
- 演算法(氣泡排序,快排,歸併排序)演算法排序
- java:快速排序演算法與氣泡排序演算法Java排序演算法
- 演算法之常見排序演算法-氣泡排序、歸併排序、快速排序演算法排序
- 演算法雙端氣泡排序演算法排序
- c#-氣泡排序-演算法C#排序演算法
- js氣泡排序JS排序
- 氣泡排序-fusha排序
- 氣泡排序演示排序
- Shell氣泡排序排序
- d氣泡排序排序
- 氣泡排序正解排序
- JavaScript氣泡排序JavaScript排序
- java氣泡排序Java排序
- 氣泡排序 java排序Java
- php氣泡排序PHP排序