【Java工具类】Java数组排序工具类

描述: 常见数组排序算法的Java实现。

public class ArraySortUtils {
    /**
     * 直接插入排序
     *
     * @param array
     * @return
     */
    public static int[] insertSort(int[] array) {
        for (int i = 1; i < array.length; i++) {
            int temp = array[i];
            int j = i - 1;
            for (; j >= 0 && array[j] > temp; j--) {
                // 将大于temp的值整体后移一个单位
                array[j + 1] = array[j];
            }
            array[j + 1] = temp;
        }
        // 另一种写法
//        for (int i = 1; i < array.length; i++) {
//            int temp = array[i];
//            int j = i - 1;
//            while
//            (temp < array[j]) {
//                array[j + 1] = array[j];
//                j--;
//                if (j == -1) {
//                    break;
//                }
//            }
//            array[j + 1] = temp;
//        }
        return array;
    }

    /**
     * 冒泡排序
     *
     * @param array
     * @return
     */
    public static int[] bubbleSort(int[] array) {
        int temp;
        for (int i = 0; i < array.length - 1; i++) {
            for (int j = 0; j < array.length - 1 - i; j++) {
                if (array[j] > array[j + 1]) {
                    temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
        return array;
    }

    /**
     * 选择排序
     *
     * @param array
     * @return
     */
    public static int[] selectSort(int[] array) {
        for (int i = 0; i < array.length - 1; i++) {
            // 做第i趟排序
            int k = i;
            for (int j = k + 1; j < array.length; j++) {
                // 选最小的记录
                if (array[j] < array[k]) {
                    // 记下目前找到的最小值所在的位置
                    k = j;
                }
            }
            // 在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换
            if (i != k) {
                // 交换a[i]和a[k]
                int temp = array[i];
                array[i] = array[k];
                array[k] = temp;
            }
        }
        return array;
    }

    /**
     * 反转排序
     *
     * @param array
     * @return
     */
    public static int[] reverseSort(int[] array) {
        int temp;
        int len = array.length;
        for (int i = 0; i < len / 2; i++) {
            temp = array[i];
            array[i] = array[len - 1 - i];
            array[len - 1 - i] = temp;
        }
        return array;
    }

    /**
     * 输出
     *
     * @param sortName
     * @param array
     */
    public static void showArrays(String sortName, int[] array) {
        System.out.println(sortName + ":" + Arrays.toString(array));
    }
}

你可能感兴趣的:(Java)