一、希尔排序?
希尔排序:先将待排序表分割成若⼲形如 L[i, i + d, i + 2d,…, i + kd] 的“特殊”⼦表,对各个⼦表分别进⾏直接插⼊排序。缩⼩增量d,重复上述过程,直到d=1为⽌。
希尔排序:先追求表中元素部分有序,再逐渐逼近全局有序
;不稳定的算法。
二、代码
void shellSort(int arr[],int length) {
for (int gap = length / 2; gap > 0; gap /= 2) {
for (int i = gap; i < length; i++) {
int currentNumber = arr[i];
int preIndex = i - gap;
while (preIndex >= 0 && currentNumber < arr[preIndex]) {
arr[preIndex + gap] = arr[preIndex];
preIndex -= gap;
}
arr[preIndex + gap] = currentNumber;
}
}
}