java的希爾排序

2021-06-14 18:19:09 字數 765 閱讀 9600

/**希爾排序的原理:根據需求,如果你想要結果從大到小排列,它會首先將陣列進行分組,然後將較大值移到前面,較小值

* 移到後面,最後將整個陣列進行插入排序,這樣比起一開始就用插入排序減少了資料交換和移動的次數,可以說希爾排序是加強

* 版的插入排序

* 拿陣列5, 2, 8, 9, 1, 3,4來說,陣列長度為7,當increment為3時,陣列分為兩個序列

* 5,2,8和9,1,3,4,第一次排序,9和5比較,1和2比較,3和8比較,4和比其下標值小increment的陣列值相比較

* 此例子是按照從大到小排列,所以大的會排在前面,第一次排序後陣列為9, 2, 8, 5, 1, 3,4

* 第一次後increment的值變為3/2=1,此時對陣列進行插入排序,

*/public class shellsort else

} data[j] = temp;

}} }

public static void main(string args) ;

system.out.println("原來:");

for (int i = 0; i < data.length; i++)

shellsort(data);

system.out.println("\n希爾排序:");

for (int i = 0; i < data.length; i++)

system.out.print(data[i] + " ");

}}

Java 希爾排序

希爾排序示意圖 希爾排序,說實話有點難,不過還是弄出來了,package com.vgbh public class shellsorting 希爾排序 將無序陣列分割為若干個子串行,子串行不是逐段分割的,而是相隔特定的增量的子串行,對各個子串行進行插入排序 然後再選擇乙個更小的增量,再將陣列分割為...

希爾排序 Java

原理 對於n個待排序的數列,取乙個小於n的整數gap gap被稱為步長 將待排序元素分成若干個組子串行,所有距離為gap的倍數的記錄放在同乙個組中 然後,對各組內的元素進行直接插入排序。這一趟排序完成之後,每乙個組的元素都是有序的。然後減小gap的值,並重複執行上述的分組和排序。重複這樣的操作,當g...

java 希爾排序

希爾排序也成為 縮小增量排序 其基本原理是,現將待排序的陣列元素分成多個子串行,使得每個子串行的元素個數相對較少,然後對各個子串行分別進行直接插入排序,待整個待排序列 基本有序 後,最後在對所有元素進行一次直接插入排序。因此,我們要採用跳躍分割的策略 將相距某個 增量 的記錄組成乙個子串行,這樣才能...