冒泡排序的实现
代碼
/* * 冒泡排序 * 參數(shù): 參與排序的數(shù)組, 數(shù)組元素個數(shù) */ void BubbleSort(int R[], int n) {int i, j;bool flag;for(i = n-1; i>=1; i--){flag = false; //用于標(biāo)記本次循環(huán)是否發(fā)生交換for(j=1; j<=i; j++)if(R[j-1]>R[j]){//交換R[j] ^= R[j-1] ^= R[j] ^= R[j-1];flag = true;}if(!flag) return;}}原理
冒泡排序是通過一系列交換操作完成的。首先比較第一個數(shù)字與第二個數(shù)字,若第一個大則交換;然后比較第二個和第三個數(shù)字,若第二個大,則交換;之后再比較前三個數(shù)字,進(jìn)行排序;依次類推
冒泡排序的結(jié)束標(biāo)志是在一趟排序的過程中沒有交換
即在一次對該數(shù)組遍歷中沒有發(fā)生數(shù)字交換,等同于R[j-1] <= R[j]恒成立,由不等式的傳遞性可知,該序列有序,所以無需排序,執(zhí)行return
總結(jié)
- 上一篇: 链栈的操作
- 下一篇: Typecho给文章设置永久链接