希尔排序:希尔排序时希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个跟高效率的版本,也称为缩小增量排序。
基本思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法;随着增量的逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止;
// 第一次排序
for (int j = 5; j < arr.length; j++) {
int insertVal = arr[j];// 待插入数
int insertIndex = j - 5;// 待插入位置,只是从第五个数开始,跟前面的第五个作比较 insertIndex = 0
while (insertIndex >= 0 && insertVal < arr[insertIndex]) {//以下代码跟直接插入代码一致
arr[insertIndex + 5] = arr[insertIndex];
insertIndex -= 5;
}
arr[insertIndex + 5] = insertVal;
}
System.out.println(