写在前面:
我也是一名java语言的爱好者,仅以此文作为学习的记录,对于文中出现的代码规范,代码格式,算法效率等问题,希望各路大神不吝赐教,在下感激不尽。同是学习的同学也同样希望互相交流,取长补短。
希尔排序又称为缩减增量排序,它通过比较相距一定间隔的元素来工作,各躺比较所用的距离随着算法的进行而减小,直到值比较相邻元素的最后一趟排序为止。希尔排序使用一个序列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); } }
结果输出