C语言实例解析精粹学习笔记——44(冒泡排序)
冒泡排序,从序列的最后一个元素与前一个元素比较大小,如果R[n-1]>R[n]则交换两个元素的位置(R[0]作为临时存放区)将最小的数据交换到R[1],第二次循环将第二小的数交换到R[2]。通过增加exchange变量来检查是否交换了位置,如果没有交换位置的话就表示数据是有序的,不需要再进行交换排序了,结束排序。
书中核心代码如下所示:
1 void Bubble_Sort(int n) 2 { 3 int i,j; 4 int exchange; 5 for(i=1; i<n; i++) 6 { 7 exchange = 0; 8 for(j=n-1; j>=i; j--) 9 { 10 if(R[j+1] < R[j]) 11 { 12 R[0] = R[j+1]; //R[n]是全局变量,要进行排序的序列 13 R[j+1] = R[j]; 14 R[j] = R[0]; 15 exchange = 1 16 } 17 } 18 if(!exchange) return; 19 } 20 }