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