目標效果:
原始碼:
#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);
printf("排序後:\n");
printresult(a,10);
}//排序方法
void bubblesort(int a,int n)
{ int i,j,flag; //flag=1的代表未完成,還需要繼續排序
for(i=0;i
在這個方法中,如果不使用開關變數flag,也可以遍歷,但是當i未遍歷完卻序列已經有序時,則不需要再繼續遍歷,當序列很大時,開關變數就很重要了。所以交換一次開關變數都改變值,j每次開始迴圈判斷一下,如過上一次迴圈開關變數沒有變,則break。如這個例子,使用開關變數可減少三次遍歷。
資料結構 氣泡排序
起泡排序的過程很簡單。首先將第乙個記錄的關鍵字和第二個記錄的關鍵字進行比較,若為逆序,則將兩個記錄交換之,然後比較第二個記錄和第三個記錄的關鍵字。依次類推,直至第n 1個記錄和第n個記錄的關鍵字進行比較為止。上述過程稱作第一趟起泡排序,其結果使得關鍵字最大的記錄被安置到最後乙個記錄的位置上。然後進行...
資料結構 氣泡排序
氣泡排序演算法的基本思想是 假設待排序表長為n,從後往前 或從前往後 兩兩比較相鄰元素的值,若為逆序 即a i 1 a i 則交換它們,直到序列比較完。我們稱它為一趟冒泡,如果將最小的元素交換到待排序序列的第乙個位置 關鍵字小的元素往上 漂浮 這就是氣泡排序名字的由來 下一趟冒泡時,前一趟確定的最小...
資料結構 氣泡排序
氣泡排序 氣泡排序的主要原理是兩兩比較,將較大者放在靠後的位置,用此種方法,將最大的值一點一點推到數列的後端。因此,對於乙個長為n的陣列,經過n 1遍冒泡,一定能將陣列排序。時間複雜度 設t n 為對長度為n的待排序列進行排序的時間。則比較次數為 n 1 n 2 1 n 1 n 2 o n 2 而且...