java排序

冒泡排序:

初始状态基本有序时使用此种方式尤嘉。

/**
 * 
 */
package com.san.ocean;

import java.util.Arrays;

/**
 * @author ocean
 * 
 */
public class HelloWorld {

    /**
     * @param args
     */
    public static void main(String[] args) {

        HelloWorld hw = new HelloWorld();

        hw.change();
    }

    /**
     * 
     * 冒泡排序 <br>
     * 两两比较取最值向前或向后移动,多次重复比较后,得到顺序排列。
     * 
     */
    public void change() {

        int[] arr = new int[] { 2, 1, 3, 5, 4, 6 };
        for (int i = 0; i < arr.length; i++) {

            for (int j = arr.length - 1; j > 0; j--) {
                // 升序
                // if (arr[j] < arr[j - 1])
                // 降序
                if (arr[j] > arr[j - 1])

                    // Java只有值传递
                    SingleTwo.getSingleTwo().swap(arr, j, j - 1);
            }

        }
        System.out.println(Arrays.toString(arr));

    }
}

/**
 * 
 * 单例模式<br>
 * 
 * 外界无法通过新建对象的方式实例化对象,而是通过调用静态方法实现唯一的实例化对象
 * 
 */
class SingleTwo {
    /**
     * 
     * 私有的静态变量
     */
    private static SingleTwo so = null;

    /**
     * 
     * 私有构造器
     */
    private SingleTwo() {

    }

    /**
     * 
     * 
     * 添加同步锁
     */
    public static SingleTwo getSingleTwo() {

        if (null == so) {
            synchronized (SingleTwo.class) {
                if (so == null)
                    so = new SingleTwo();
            }
        }
        return so;

    }

    /**
     * 交换两个变量值算法<br>
     * 
     * 不初始化第三个变量交换两个变量的值
     * 
     */
    public void swap(int[] arr, int i, int j) {

        arr[i] = arr[i] - arr[j];

        arr[j] = arr[i] + arr[j];

        arr[i] = arr[j] - arr[i];
    }

}
原文地址:https://www.cnblogs.com/ocean-san/p/4095755.html