概念
排序
常见排序算法
- 插入排序
1.直接插入排序
2.希尔排序 - 选择排序
1.堆排序
2.选择排序 - 交换排序
1.冒泡排序
2.快速排序 - 归并排序
1.归并排序
插入排序 & 希尔排序
插入排序及希尔排序实现及其相关
补充(折半插入排序,在有序区间选择数据应该插入的位置时,因为区间的有序性,可以利用折半查找的思想。):
public static void bsInsertSort(int[] array) {
for (int i = 1; i < array.length; i++) {
int v = array[i];
int left = 0;
int right = i;
// [left, right)
// 需要考虑稳定性
while (left < right) {
int m = (left + right) / 2;
if (v >= array[m]) {
left = m + 1;
} else {
right = m;
}
}
// 搬移
for (int j = i; j > left; j--) {
array[j] = array[j - 1];
}
array[left] = v;
}
}
选择排序
堆排序
冒泡排序
快速排序
归并排序
总结