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

星期四,年後第一週目前來看自己每天的任務完成的不是很好,博客寫了兩篇,還差兩篇,項目進度緩慢,另外小說還沒有完成,日常的閱讀時間稍有鬆懈,需要保持定力,儘快補上不足,在知識輸入方面看書時間還需要繼續保持,要有效利用所有業餘時間,另外繼續攻堅克難思考編程領域的高深問題。中午時間零碎時間的利用方面不能有絲毫鬆懈,每週一個關鍵博客的任務不能忘掉。在輸出方面,思想輸出也就是小說要保持定力每週三章的任務要保質保量,技術輸出方面一個是博客一個是項目一定要堅持。

希爾排序

希爾排序的核心思想原理

在理解希爾排序的時候,首先要明確他的基本思想: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;


		}



	}




}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章