嗯...毕竟经济基础决定上层建筑
首先来看哪些排序是稳定的
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]);
}
}