一、什么是希尔排序
希尔排序又称缩小增量排序,是直接插入排序算法的一种更搞笑的改进版本。把记录按下标的一定增量分组,对每组使用插入排序;随着增量逐渐减少,每组中包含的关键词越来越多,当增量减至1时,整个文件刚好被分为一组。
分析:先将数据分组,在组内进行排序,分组间隔多为数组长度的一半
二、时间复杂度
希尔排序的时间复杂度为o(n^(1.3-2))
三、主要代码(java形式)
int gap = array.length;
while (true) {
gap /= 2;
for (int i = 0; i < gap; i++) {
for (int j = i + gap; j < array.length; j += gap) {
int k = j - gap;
while (k >= 0 && array[k] > array[k+gap]) {
int temp = array[k];
array[k] = array[k+gap];
array[k + gap] = temp;
k = gap;
}}}
if (gap == 1)
break;
}
其他排序