資料結構跑路篇 氣泡排序

2021-08-04 03:17:57 字數 1083 閱讀 5294

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...