写在前面:
我也是一名java语言的爱好者,仅以此文作为学习的记录,对于文中出现的代码规范,代码格式,算法效率等问题,希望各路大神不吝赐教,在下感激不尽。同是学习的同学也同样希望互相交流,取长补短。
——zsferrier@126.com
希尔排序又称为缩减增量排序,它通过比较相距一定间隔的元素来工作,各躺比较所用的距离随着算法的进行而减小,直到值比较相邻元素的最后一趟排序为止。希尔排序使用一个序列h1,h2,...ht,叫做增量序列,只要保证h1等于1就可行。前一趟排序的结果不会被后一趟排序所打乱。
(图片来源于网络www.2cto.com)
代码:
public class Main {
public static void shellsort(int[] a){
int j;
for (int gap = a.length/2;gap>0;gap/=2){
for (int i = gap; i < a.length; i++) {
int tmp = a[i];
for (j = i; j >= gap&&tmp<a[j-gap]; j-=gap) {
a[j] = a[j-gap];
}
a[j] = tmp;
}
for (int i : a) {
System.out.print(i+" ");
}
System.out.println();
}
}
public static void main(String[] args) {
int[] a = {9,1,2,5,7,4,8,6,3,5};
shellsort(a);
}
}
结果输出