一、算法原理
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。
二、算法实现
public static void main(String[] args) {
int arr[]={9,1,5,8,3,7,6};
int d = arr.length;
while (d >= 1) {
d = d / 3 + 1;
for (int i = d; i < arr.length; i ++) {
for (int j = i; j-d >= 0; j = j-d) {
if (arr[j] < arr[j-d]) {
int tmp = arr[j];
arr[j] = arr[j-d];
arr[j-d] = tmp;
System.out.println(Arrays.toString(arr));
}
}
}
}
}
三、参考链接
四、算法总结
对于希尔排序算法,实际上可以理解为插入排序的一个改进版本,通过增大遍历的步进达到减少数据交换,从而达到提高排序效率。