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

基本思路:

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

       冒泡排序需要定义两层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]);
            }
        }
    
    }

     

posted @ 2017-04-12 11:30  心与心的距离  阅读(294)  评论(0编辑  收藏  举报