java 实现希尔排序

希尔排序

希尔排序是将数据分组,然后进行快速排序
在这里插入图片描述
优点是无需大量移动即可实现排序。

代码

public class ShellSort {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[] array1 = { 3, -1, 9, 10, -2, 5, 1 };

		// 创建要给80000个的随机的数组
		int[] array = new int[800000];
		for (int i = 0; i < 800000; i++) {
			array[i] = (int) (Math.random() * 800000); // 生成一个[0, 8000000) 数
		}

		Date data1 = new Date();
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
		String date1Str = simpleDateFormat.format(data1);
		System.out.println("希尔排序前的时间是=" + date1Str);
		int ran2 =  (int) (Math.random() * 800000); 
		System.out.println(array[ran2]);
		sort2(array);
		Date data2 = new Date();
		String date2Str = simpleDateFormat.format(data2);
		System.out.println("希尔排序后的时间是=" + date2Str);
		System.out.println();
		/*
		 * for(int i=0;i<array.length;i++) { System.out.print(array[i]+" "); }
		 */

	}
	public static void sort2(int[] array) {

		for (int gap = array.length / 2; gap > 0; gap /= 2) {
		//步长
			for (int i = gap; i < array.length; i++) {
				int j = i;  //插入的数据下标
				int temp = array[j];	//插入的数据
				// if(array[j]<array[j-gap]) {
				while (j - gap >= 0 && temp < array[j - gap]) {
					array[j] = array[j - gap]; 
					j -= gap;
				}
				array[j] = temp;
			}
			// }
		}

		/*
		 * for(int i = 0;i>1;i/=8000000) { System.out.print(array[i]+" "); }
		 * 
		 * System.out.println(array);
		 */

	}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值