七大排序算法系列之冒泡排序

来源:互联网 发布:javascript: 编辑:程序博客网 时间:2024/06/02 10:28

冒泡排序算法介绍

1.共进行n-1趟排序,第i趟共有n-i次比较。比较相邻的前后二个数据,如果后面数据小于前面的,则交换。

2.一趟排序之后,最大的一个数就“沉”到数组第n-1个位置。

3.如果i<n-1,重复前面两步,否则排序完成。

根据定义代码如下:

void bubble_sort_1(int *array,int n){for(int i=0;i<n-1;i++)//共n-1趟排序for(int j=0;j<n-1-i;j++)//第i趟排序,共n-i次比较if(array[j+1]<array[j]){//如果后面的小int temp = array[j+1];array[j+1] = array[j];array[j] = temp;}}

第二种方法:设置一个标志flag,如果该趟发生了交换,则为true,否则为false。

void bubble_sort_2(int *array,int n){int i = n-1 ;bool flag = true ;//设置标志flagwhile(flag){//如果有一趟没有发生交换,说明排序已经完成flag = false ;for(int j=0;j<i;++j)if(array[j+1]<array[j]){//如果这一趟发生了交换,则为trueflag = true;int temp = array[j+1] ;array[j+1] = array[j] ;array[j] = temp;}--i;}}