Java七武器----排序算法之希尔排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37979178/article/details/87275844

星期四,年后第一周目前来看自己每天的任务完成的不是很好,博客写了两篇,还差两篇,项目进度缓慢,另外小说还没有完成,日常的阅读时间稍有松懈,需要保持定力,尽快补上不足,在知识输入方面看书时间还需要继续保持,要有效利用所有业余时间,另外继续攻坚克难思考编程领域的高深问题。中午时间零碎时间的利用方面不能有丝毫松懈,每周一个关键博客的任务不能忘掉。在输出方面,思想输出也就是小说要保持定力每周三章的任务要保质保量,技术输出方面一个是博客一个是项目一定要坚持。

希尔排序

希尔排序的核心思想原理

在理解希尔排序的时候,首先要明确他的基本思想:1. 对原数组二分并将各个分组数据执行插入排序,使得原数组最终从宏观上看处于有序。2.对经过部分排序的数组执行插入排序完成最终排序。3.是对插入排序的优化。

编码实现

从希尔排序的核心思想来看,我们在通过编码实现的时候,就要找到循环的共性,这里的实现核心主要是两点:1. 原数组的分组。2. 分组数组的插入排序。以下为代码实现:

public class ArithmeticUtil{
	public static int[] sheelSort(int[] a ){
		int len=a.length;
		//while循环进行分组判断
		while(len!=0){
			len/=2;
			//双重for循环实现数组分组
			for(int i=0;i<len;i++){
				for(int j=i+len;j<a.length;j+=len){
					//插入排序的运用
					int k=j;
					int temp=a[j];
					//注意只和待插入的数据进行比较
					while(k>i&&a[k-len]>temp){
						a[k]=a[k-len];//和while循环中的k有关数据后移
						k-=temp;
					}
					a[k]=temp;//兼顾while循环条件不成立的情况
				}
			
			}
			return a;


		}



	}




}



猜你喜欢

转载自blog.csdn.net/qq_37979178/article/details/87275844