冒泡排序

package com.company;

import java.util.Arrays;

public class Bubbles {

    /**
     * 经典冒泡排序算法
     * @param source
     */
    static public void bubble0(int[] source) {
        //首先获取源数组的长度。
        int arrayLength = source.length;
        //倒序遍历数组
        for (int counter = arrayLength - 1;counter > 0;counter--) {
            //如果想要排序则必须至少有2个元素才有意义,所以子排序从源数组的末尾元素开始向前排。
            //每次比较都是前一个元素和后一个元素进行比较。
            //因为是相邻两元素之间顺序的对调所以外层循环不能走到index0那里,否则就会跳到数组外面去,从而出现崩溃。
            //外层排序确保每遍历一次以后的元素都已经是有序的。
            //外层循环确定了每趟排序的范围。
            for (int counter0 = counter;counter0 > 0;counter0--) {
                //内层循环是真正遍历的开始
                if (source[counter0] < source[counter0 - 1]) {
                    //从小到大排序
                    int tempElement = source[counter0];
                    source[counter0] = source[counter0 - 1];
                    source[counter0 - 1] = tempElement;
                } else {
                    //此时已经有序,跳过即可。
                    continue;
                }
            }
        }
    }
}

你可能感兴趣的:(冒泡排序)