排序演算法 2 希爾排序

2022-09-01 08:15:09 字數 617 閱讀 6636

希爾排序,也稱遞減增量排序演算法,是插入排序的一種更高效的改進版本。但希爾排序是非穩定排序演算法。

希爾排序是基於插入排序的以下兩點性質而提出改進方法的:

希爾排序的基本思想是:先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄"基本有序"時,再對全體記錄進行依次直接插入排序。

選擇乙個增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;

按增量序列個數 k,對序列進行 k 趟排序;

每趟排序,根據對應的增量 ti,將待排序列分割成若干長度為 m 的子串行,分別對各子表進行直接插入排序。僅增量因子為 1 時,整個序列作為乙個表來處理,表長度即為整個序列的長度。

//arr表示陣列首位址,n表示陣列長度

2void shellsort(int *arr, int

n) 10 arr[j + gap] = temp; //

因為j-=gap多了一次i11}

12}13 }

排序演算法(2) 希爾排序

希爾排序 先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄 基本有序 時,再對全體記錄進行依次直接插入排序。1 選擇乙個增量序列t1,t2,tk,其中ti tj,tk 1 2 按增量序列個數k,對序列進行k 趟排序 3 每趟排序,根據對應的增量ti,將待排序列分割成...

排序 2 希爾排序

我們來談一談希爾排序 希爾排序和直接插入排序一樣屬於插入排序,但是由於分組的存在,相等的元素可能分在不同組,導致他們的次序可能發生變化,所以它是不穩定的排序。除此之外由於它移動次數較少所以它比直接插入排序時間效能優越,效率更高。時間複雜度 最好情況 o n 最壞情況 o n2 平均情況 o n1.3...

排序2 希爾排序

shell排序本質也是一種插入排序,是先分組然後採用直接插入排序。因此也稱為縮小增量排序 2.1直接插入排序與希爾排序對比 前者時間複雜度o n 2 則100個資料需要10000次迴圈 後者若分為10組 100個資料分為10組,每組先有序 10 2 乘 10 1000次,再插入排序,而插入排序越有序...