Java中的一些基础算法

来源:互联网 发布:淘宝双十一交易情况 编辑:程序博客网 时间:2024/05/22 20:05
/** * 插入排序、冒泡排序、选择排序、快速排序 * @author ZHANGHAOHAO * @date 2017/5/10 */public class Algorithm {    /**     * 插入排序:把未排序的插入到有序的序列里面     *     * @param array     * @return     */    public static void insertSort(int[] array) {        if (array == null || array.length == 0)            throw new NullPointerException("no sort");        for (int i = 1; i < array.length; i++) {            for (int j = 0; j < i; j++) {                if (array[i] < array[j]) {                    int temp = array[i];                    array[i] = array[j];                    array[j] = temp;                }            }        }    }    /**     * 冒泡排序:把最大的数冒泡到最后面     *     * @param array     * @return     */    public static int[] bubbleSort(int[] array) {        if (array == null || array.length == 0)            throw new NullPointerException("no sort");        for (int j = 0; j < array.length - 1; j++) {            for (int i = 0; i < array.length - j - 1; i++) {                if (array[i] > array[i+1]) {                    int temp = array[i];                    array[i] = array[i+1];                    array[i+1] = temp;                }            }        }        return array;    }    /**     * 选择排序: 选出最小的和第一位数交换,选出第二小的和第二位数交换     *     * @param array     * @return     */    public static int[] selectSort(int[] array) {        if (array == null || array.length == 0)            throw new NullPointerException("no sort");        for (int j = 0; j < array.length - 1; j++) {            int min = array[j];            int n = j;            for (int i = j + 1; i < array.length; i++) {                if (array[i] < min) {                    min = array[i];                    n = i;                }            }            if (n != j) {                int temp = array[j];                array[j] = array[n];                array[n] = temp;            }        }        return array;    }    /**     * 快速排序,先找到中间值,然后在分块排序     *     * @param array     * @return     */    public static int[] fastSort(int[] array, int start, int end) {        if (array == null || array.length == 0)            throw new NullPointerException("no sort");        if (end > start) {            int middle = getMiddle(array, 0, array.length - 1);            getMiddle(array, 0, middle - 1);            getMiddle(array, middle + 1, array.length - 1);        }        return array;    }    public static int getMiddle(int[] array, int start, int end) {        int middle = array[start];        while (end > start) {            while (end > start && array[end] >= middle)                end--;            array[start] = array[end];            while (end > start && array[start] <= middle)                start++;            array[end] = array[start];        }        array[start] = middle;        return start;    }}
1 0
原创粉丝点击