排序演算法-氣泡排序

00潤物無聲00發表於2016-12-31

  氣泡排序是一種交換排序,交換排序的基本思想是比較兩個記錄鍵值的大小,如果這兩個記錄鍵值的大小出現逆序,則交換這兩個記錄,這樣將鍵值較小的記錄向序列的前部移動,鍵值較大的記錄向序列後部移動


  氣泡排序首先將第一個記錄的鍵值和第二個記錄的鍵值進行比較,如果逆序,則記錄交換,然後比較第二個和第三個記錄的鍵值。知道完成第n-1個記錄和第n個記錄的鍵值比較交換為止。整個過程為第一趟氣泡,鍵值最大的記錄移動到第n個位置上。重複上述過程,當在一趟氣泡過程中沒有進行記錄交換的操作時,排序過程結束;

  

  整個排序過程最多進行n-1次,如果是8個數,最大進行7趟氣泡;


  在演算法實現時,定義一個整型變數endsort,在每次排序之前,先置0,如果在一趟記錄中交換了記錄,則置為1.當一次迴圈結束時,再堅持endsort,如果endsort的值為0,則終止演算法;


void BubbleSort(List R,int n)
{
	int i,j,temp,endsort;
	for ( i = 1; i < n-1; i++) {
		endsort =0;
		for ( j = 1; j < n-i; j++) {
			if(R[j].key>R[j+1].key)
			{
				temp=R[j];
				R[j]=R[j+1];
				R[j+1]=temp;
				endsort=1;				
			}
		}
		if(endsort==0) break;
	}
}




相關文章