演算法導論學習補充 希爾排序

2021-05-27 09:39:34 字數 582 閱讀 3883

/**

* 希爾排序思想:先將整個待排記錄序列分割成若干子串行分別進行直接插入排序,

* 待整個序列中的記錄「基本有序」時,再對全體記錄進行一次直接插入排序

* 希爾排序時間複雜度為o(n^3/2)

* */

public class shellsort

arr[j+d] = temp;}}

}/**

* 外層排序演算法

* @param arr 要排序的陣列

* @param dl 增量陣列,每次按照增量分割子串行進行排序,增量陣列中最後乙個必須為1

*/static void shellsort(int arr,int dl)

}//測試.....

public static void main(string args) ;

int dl = ;

shellsort(arr,dl);

system.out.println("排序結果為:");

for(int i = 0;isystem.out.println(arr[i]);

}}

演算法導論 演算法分析 希爾排序 003

希爾排序是1959 年由d.l.shell 提出來的,相對直接排序有較大的改進。希爾排序又叫縮小增量排序 基本思想 先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄 基本有序 時,再對全體記錄進行依次直接插入排序。演算法流程 1 選擇乙個增量序列t1,t2,tk,其...

學習排序演算法4 希爾排序

此 需要用到我前面三個部落格的部分 因為此處將希爾排序和選擇排序,插入排序進行了執行時間的比較 希爾排序 思想 是一種對插入排序的改進,因為插入排序每次交換只能交換相鄰的元素,元素挪到自己正確的位置可能需要移動很多次。所以希爾排序交換不相鄰的元素,以對陣列進行區域性排序,並最終用插入排序將區域性有序...

學習演算法導論 快速排序

快速排序用的也是分治法,快速排序分為三個步驟 1.分解 陣列a low.high 被劃分為兩個 可能為空 的子陣列a low.q 1 和a q 1.high 使得a low.q 1 中的每個元素都小於等於a q 而a q 小於等於a q 1.high 中的每個元素。q是乙個劃分點。2.解決 通過遞迴...