zoukankan      html  css  js  c++  java
  • 排序算法------冒泡排序

    基本思路:

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

           冒泡排序需要定义两层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]);
              }
          }
      
      }
  • 相关阅读:
    phpexcel 字符串转码
    thinkphp 3.2 linux二级目录安装
    linux 系统、命令、软件
    thinkphp3.2和phpexcel导入
    苹果手机微信分享代码失效
    thinkphp3.2与phpexcel带图片生成 完美案例
    thinkphp3.2与phpexcel基础生成
    thinkphp 3.2加载类
    thinkphp 3.2与phpexcel
    thinkphp 导出exl功能
  • 原文地址:https://www.cnblogs.com/wqtzhaoqiang/p/6698359.html
Copyright © 2011-2022 走看看