bubble sort : 从后向前逐渐比较大小顺序,一个接一个的比较,最后列出排列顺序的方法。
如有4位数字:43 、21 、12、54 用bubble sort 排列结果
初始 第一趟 第二趟 第三趟
43 12 12 12
21 43 21 21
12 21 43 43
54 54 54 54
对任意n个数据都要进行N-1趟的排序,若在某一趟排序中没有记录位置的交换,说明该序列已经按照关键字
排序完了。(如 该例子的确第二和第三趟是不是重复的) ,为了优化代码,采用FLAG来处理!
bubblesort(R) //冒泡排序法
recdtype R[n] ;
{ int i, j, flag ;
recdtype temp;
for( i = 0 ; i< n-2; i++) //运行N-1趟排序
{ flag=true;
for( j = n-1 ; j>= i ; j--) //从后往前扫描
if( R[j+1].key < R[j].key ) //交换记录顺序
{ temp = R[j+1] ;
R[j+1] = R[j] ;
R[j] = temp ;
flag = false; // 置交换位置
}
if (flag) break; //本趟未发生交换
}
}
如有4位数字:43 、21 、12、54 用bubble sort 排列结果
初始 第一趟 第二趟 第三趟
43 12 12 12
21 43 21 21
12 21 43 43
54 54 54 54
对任意n个数据都要进行N-1趟的排序,若在某一趟排序中没有记录位置的交换,说明该序列已经按照关键字
排序完了。(如 该例子的确第二和第三趟是不是重复的) ,为了优化代码,采用FLAG来处理!
bubblesort(R) //冒泡排序法
recdtype R[n] ;
{ int i, j, flag ;
recdtype temp;
for( i = 0 ; i< n-2; i++) //运行N-1趟排序
{ flag=true;
for( j = n-1 ; j>= i ; j--) //从后往前扫描
if( R[j+1].key < R[j].key ) //交换记录顺序
{ temp = R[j+1] ;
R[j+1] = R[j] ;
R[j] = temp ;
flag = false; // 置交换位置
}
if (flag) break; //本趟未发生交换
}
}