九大排序算法

嗯...毕竟经济基础决定上层建筑
首先来看哪些排序是稳定的
stable sort:插入排序,冒泡排序,归并排序,计数排序,基数排序,桶排序
unstable sort:选择排序,快速排序,堆排序

1.插入排序

最坏时间复杂度:

void Insert_Sort(int A[]) {
    for (int i = 1; i < N; ++i) {
        int j = i - 1;
        while (j >= 0 && A[j] > A[i]) {
            swap(A[i], A[j]);
        }
    }
}

2.冒泡排序

最坏时间复杂度:

void Bubble_Sort(int A[]) {
    for (int i = 0; i < N; ++i)
        for (int j = N - 1; j > i; --j) {
            if (A[i] > A[j])
                swap(A[i], A[j]);
        }
}

3.选择排序

最坏时间复杂度:
思路是每次找一个最小值

void Selection_Sort(int A[]) {
    for (int i = 0; i < N - 1; ++i) {
        int min = i;
        for (int j = i + 1; j < N; ++j) {
            if (A[min] > A[j])
                min = j;
        }
        swap(A[min], A[i]);
    }
}

你可能感兴趣的:(九大排序算法)