冒泡排序

来源:互联网 发布:淘宝联通话费充值 编辑:程序博客网 时间:2024/05/11 19:43

冒泡排序

简单的描述就是

用第一个和第二个比,如果第一个大(小)就和第二个交换,如果没有第二个大(小)就不交换,再用第二个和第三个比,如果第二个大(小)就和第三个交换,如果没有第三个大(小)就不交换。。。

这样第一次冒泡就会让最大(小)的元素到达最后一个位置。

第二次冒泡同样,就会让第二大(小)的元素到达倒数第二的位置。。。

代码如下:

void balloonOrder(int Arr[],int count){    int i,j,m;    m = 1 ;    for(i=count-1;i>-1&&m;i--)    {        m =0 ;        for(j=0;j<i;j++)        {            if(Arr[j]>Arr[j+1])            {                swap(&Arr[j],&Arr[j+1]);                m = 1 ;            }        }    }}

冒泡排序也是两层循环,不同的是两层循环从数组的起点和终点开始,相遇进入下一次大循环

在冒泡排序存在空排的情况,比如后面的已经排好了的情况(10,9,8,7,6,5,4,3,2,1降序排列)

此时可以设置一个标志位,一次冒泡中开始为false,有一次交换就设置为true,如果在一次冒泡结束后标志位任然为false,那么就认为已经拍好了,后面的就没必要继续排列了

0 0
原创粉丝点击