冒泡排序法的理解

方便回忆:

冒泡排序法是先排序好最大的那个数字在数组最后面,再排倒数第二大的数字。。。以此类推。

void
  Bubble_Sort( int  *num,  int  n)
{
     int  i, j;
     for (i = 0; i < n; i++)                 //1
     {
         for (j = 0; i + j < n - 1; j++)    //2
         {
             if (num[j] > num[j + 1])      //3
             {
                 int  temp = num[j];
                 num[j] = num[j + 1];
                 num[j + 1] = temp;
             }
         }
     }
     return ;
}


n是要排序的数字个数
以87, 12, 56, 45, 78这五个数字为例:
n=5
当i=0,j=0时,对比第一个(num[0])和第二个数字(num[1]),把大的排到后面。    (//3处)   12,87,56,45,78
然后j自加1,对比第二个(num[1])和第三个数字(num[2])                   12,56,87,45,78
j继续自加,以此类推                                     12,56,45,87,78
.。。                                            12,56,45,78,87

接下来i自加1,j重新回到0,即 //1 处开启第二轮循环。那么i自加1的意义,可以从 //2处的i+j<n-1 条件看出,相当于不对比数组最后一个数,为什么呢?因为在i=0的时候就已经把最大的数排序到数组最后了(num[4]),已经没必要将这个数字再进行对比

整个流程就相当于把最大的数字一一排序到数组最后,就像冒泡一样。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值