【JAVA算法】经典排序算法 --希尔排序ShellSort

写在前面:

    我也是一名java语言的爱好者,仅以此文作为学习的记录,对于文中出现的代码规范,代码格式,算法效率等问题,希望各路大神不吝赐教,在下感激不尽。同是学习的同学也同样希望互相交流,取长补短。

                                                                                                                                                      ——[email protected]

希尔排序又称为缩减增量排序,它通过比较相距一定间隔的元素来工作,各躺比较所用的距离随着算法的进行而减小,直到值比较相邻元素的最后一趟排序为止。希尔排序使用一个序列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);
	}
}

结果输出


猜你喜欢

转载自blog.csdn.net/qq_37935670/article/details/79650772