1、原理分析:
顧名思義,就是一次迴圈像冒泡一樣,兩兩比較,最小的浮上來或者最大的沉下去;分析外層控制次數為n次,內層控制剩餘比較次數為n-(i+1)次;
示意:
1.外層為n次
2.內層為剩餘迴圈次數,所以應該從0開始,執行次數為n-(i+1)
2、**展示:
#include
void bubble(int
*arr,int
length)
}}
}int main();
intlength = sizeof(arr)/sizeof(arr[0]);
bubble(arr,length);
for(z=0;z
return
0;}
3.複雜度分析:
每一次迴圈需要n-1次;所以總共次數應該是∑n
i=1(
i−1)
次,即n(n-1)/2;所以時間複雜度為o(n2
)最好的情況為全部正序o(n);最壞的情況為全部逆序o(n2
)4.改進版:
原因:假設執行時,一次loop,後面的全部正序沒有調換順序,接著第二次loop還要你乙個個判斷,這樣不就浪費了時間嗎?
採取方式:可以設定乙個開關,loop時候關閉,如果發生交換則為開啟;那麼久判斷這個開關,如果關閉就沒有任何交換,即正序排列,否則繼續排序;
**實現:
#include
#define true 1
#define false 0
void bubble(int
*arr,int
length)
}}
}int main();
intlength = sizeof(arr)/sizeof(arr[0]);
bubble(arr,length);
for(z=0;z
return
0;}
資料結構 氣泡排序
起泡排序的過程很簡單。首先將第乙個記錄的關鍵字和第二個記錄的關鍵字進行比較,若為逆序,則將兩個記錄交換之,然後比較第二個記錄和第三個記錄的關鍵字。依次類推,直至第n 1個記錄和第n個記錄的關鍵字進行比較為止。上述過程稱作第一趟起泡排序,其結果使得關鍵字最大的記錄被安置到最後乙個記錄的位置上。然後進行...
資料結構 氣泡排序
氣泡排序演算法的基本思想是 假設待排序表長為n,從後往前 或從前往後 兩兩比較相鄰元素的值,若為逆序 即a i 1 a i 則交換它們,直到序列比較完。我們稱它為一趟冒泡,如果將最小的元素交換到待排序序列的第乙個位置 關鍵字小的元素往上 漂浮 這就是氣泡排序名字的由來 下一趟冒泡時,前一趟確定的最小...
資料結構 氣泡排序
目標效果 原始碼 include void print out int a,int n void bubble sort int a,int n int main printf 起泡排序 n printf 排序前 n printresult a,10 排序方法 bubblesort a,10 pri...