• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

冒泡排序

开发技术 开发技术 6小时前 1次浏览

冒泡排序

  • 如果遇到相等的值不进行交换,那么可以说这种排序方式是稳定的

  • 冒泡排序原理:依次比较相邻的两个数,将值大的元素交换到右边

  • 比较小的放在前面,大的数放后面

    • 思路

      • 依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。

      • (1)第一次比较:首先比较第一和第二个数,将小数放在前面,将大数放在后面。

      • (2)比较第2和第3个数,将小数 放在前面,大数放在后面。

      • (3)如此继续,知道比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成

      • (4)在上面一趟比较完成后,最后一个数一定是数组中最大的一个数,所以在比较第二趟的时候,最后一个数是不参加比较的。

      • (5)在第二趟比较完成后,倒数第二个数也一定是数组中倒数第二大数,所以在第三趟的比较中,最后两个数是不参与比较的。

      • (6)依次类推,每一趟比较次数减少依次

      • 外层循环是数值总个数需要的比较次数,内层循环是依次将前后数值进行比较

    • 代码一

    • void bubblesort(int a[] ,int n){
          for(int i=1;i<n;i++){
              for(int j=0;j<n-i;j++){
                  if(a[j]<a[j+1]){
                  int temp = a[j];
                  a[j]=a[j+1];
                  a[j+1]=temp;
                  }
              }
          }
          for(int i=0;i<n;i++){
          cout << a[i];
          }
      }
    • 外层循环锁定数组中的一个数值,内层循环遍历数组与外层循环值进行比较,比外层循环数值小的就交换到外层循环锁定的值的下标处,一次循环可以锁定一个最小值,然后就不用管最小值所在下标。外层循环加1,内层循环跟着外层循环转变,继续比较再次找出一个剩余数最小值,然后就可以完成冒泡排序

      代码二

    • void bubblesort(int a[] ,int n){
          for(int i=0;i<n;i++){
              for(int j=i;j<n;j++){
                  if(a[j]<a[i]){
                  int temp = a[j];
                  a[j]=a[i];
                  a[i]=temp;
                  }
              }
          }
          for(int i =0;i<n;i++){
          cout <<a[i];
          }
      }

程序员灯塔
转载请注明原文链接:冒泡排序
喜欢 (0)