• 排序算法------冒泡排序


    基本思路:

           冒泡排序是一种简单的交换类排序。其基本思路是,从头开始扫描待排序的元素,在扫描过程中依次对相邻元素进行比较,将关键字值大的元素后移。每经过一趟排序后,关键字值最大的元素将移到末尾,此时记下该元素的位置,下一趟排序只需要比较到此位置为止,直到所有元素都已有序排列。

           冒泡排序需要定义两层for循环,每次取出循环位置的数值与下一个位置的数值进行比较,如果数组大于或者小于(由代码中的if逻辑判断)则交换两个数值在集合中的位置。

    冒泡排序算法的运作如下:

    1.  比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    2.  对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
    3.  针对所有的元素重复以上的步骤,除了最后一个。
    4.  持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
      package cn.zhaoqiang.tuxing;
      /*
       * 冒泡排序 
       * 
       * 一位老师的黄金法则(出自于微冷的雨)
       * 口诀:
       * 1.内外初值0开始
       * 2.外层结束需-1,内层减i再-1
       * 3.打擂算法做对比,对比j和j+1
       * 4.如若不想报异常,等号万万不能要      
       * */
      
      public class mppx {
          public static void main(String[] args) {
              int stop = 0;
              int [] num = {1,5,3,7,8};   //定义一个数组
              for (int i = 0; i < num.length-1; i++) {   //最多做n-1趟排序
                  //对当前无序区间num[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的)
                  for (int j = 0; j < num.length-1-i; j++) {
                      if(num[j]>num[j+1]){   //把小的值交换到后面
                          stop =num[j];
                          num[j]=num[j+1];
                          num[j+1]=stop;
                      }
                  }
              }
              for (int k = 0; k < num.length; k++) {
                  System.out.print(num[k]);
              }
          }
      
      }
  • 相关阅读:
    父容器的flowover:hidden 必须配合父容器的宽高height width才能生效
    css使 同一行内的 文字和图片 垂直居中对齐?
    vim查找替换
    要让div中的float不会自动显示到下一行来?
    如何理解clear的css属性?
    div+css使多行文字垂直居中?
    VMnet1和V8
    unslider的用法详解
    json的中括号和大括号的使用?
    如何合理定价,定价定天下,必须要学会这个哦!
  • 原文地址:https://www.cnblogs.com/wqtzhaoqiang/p/6698359.html
Copyright © 2020-2023  润新知