冒泡排序法的理解

xiaoxiao2021-02-27  317

方便回忆: 冒泡排序法是先排序好最大的那个数字在数组最后面,再排倒数第二大的数字。。。以此类推。 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]),已经没必要将这个数字再进行对比 整个流程就相当于把最大的数字一一排序到数组最后,就像冒泡一样。
转载请注明原文地址: https://www.6miu.com/read-5324.html

最新回复(0)