常见排序算法


一、冒泡排序

百度百科

public static void bubbleSort(int[] ints) {
    for(int i = 0; i < ints.length - 1; i++) {
        for(int j = 0; j < ints.length - 1 - i; j++) {
            if (ints[j] > ints[j + 1]) {
                int temp = ints[j];
                ints[j] = ints[j + 1];
                ints[j + 1] = temp;
            }
        }
    }
}

二、插入排序

百度百科

public static void insertionSort(int[] ints) {
    for (int i = 1; i < ints.length; i++) {
        int temp = ints[i];
        int j = i - 1;
        while (j >= 0 && ints[j] > temp) {
            ints[j + 1] = ints[j];
            j--;
        }
        ints[j + 1] = temp;
    }
}

三、选择排序

百度百科

public static void selectionSort(int[] ints) {
    for (int i = 0; i < ints.length - 1; i++) {
        int minIndex = i;
        // 每一个元素都和剩下的未排序的元素比较
        for (int j = i + 1; j < ints.length; j++) {
            if (ints[minIndex] > ints[j]) {
                minIndex = j;
            }
        }
        // 经过一轮循环,k为本轮最小值的下标,如果最小值下标不是自己,就把最小值跟自己互换位置
        if (minIndex != i) {
            int temp = ints[i];
            ints[i] = ints[minIndex];
            ints[minIndex] = temp;
        }
    }
}

四、快速排序

百度百科

public static void quickSort(int[] ints, int start, int end) {
    int pivot = ints[start], i = start, j = end;
    while (i < j) {
        // 从右向左找小于pivot的数来填ints[i]
        while (i < j && ints[j] >= pivot) {
            j--;
        }
        if (i < j) {
            ints[i] = ints[j];
            i++;
        }
        // 从左向右找大于或等于pivot的数来填ints[j]
        while (i < j && ints[i] < pivot) {
            i++;
        }
        if (i < j) {
            ints[j] = ints[i];
        }
        ints[i] = pivot;
        // 左边区间快速排序
        quickSort(ints, start, i - 1);
        // 右边区间快速排序
        quickSort(ints, i + 1, end);
    }
}


尊重写作权利,转载请注明出处 ^_^
原文地址:https://www.cnblogs.com/convict/p/14881597.html