排序 希爾排序模板

2021-07-04 06:31:50 字數 666 閱讀 4280

希爾排序又稱縮小增量排序

1、先取定乙個小於n的整數gap1作為第乙個增量,把整個序列分成gap1組。所有距離為gap1的倍數的元素放在同一組中,在各組內分別進行排序(分組內採用直接插入排序或其它基本方式的排序)。(一般gap1為n/2,一次往後類推:gap2=gap/2,若為奇數,則gap2=(gap1+1)/2  gap1=(n+1)/2)

2、然後取第二個增量gap23、依此類推,直至增量gap=1,即所有元素放在同一組中進行排序為止。

public class sortmethods 

system.out.println();

} private static void swap(int a, int i, int j)

public static void main(string args) ;

shellsort(a);

print(a);

} //希爾排序

private static void shellsort(int a) }}

//for迴圈的修正(這裡就是讓奇數的加一後在二分,還有gap=1時,就是迴圈結束的時候,切要放在else裡面否則最後gap=1不會進行排序的)

if(gap>1)else if(gap==1)

} }

}

希爾排序 模板

希爾排序的快慢處於中等水平,我們知道插入排序的平均時間複雜度為o n 2 但也取決於序列的混亂程度,越混亂插入排序越慢,為了減小混亂程度加快插入排序的速度,希爾排序就派上用場了 可以說希爾排序是插入排序的加速版 希爾排序其實類似於插入排序,插入排序是要在間隔為1的為基礎上選擇未排序集合的第乙個元素在...

排序 希爾排序

希爾排序 shell sort 又稱為縮小增量排序,輸入插入排序演算法,是對直接排序演算法的一種改進。本文介紹希爾排序演算法。對於插入排序演算法來說,如果原來的資料就是有序的,那麼資料就不需要移動,而插入排序演算法的效率主要消耗在資料的移動中。因此可知 如果資料的本身就是有序的或者本身基本有序,那麼...

排序 希爾排序

縮小增量排序 待排序列按關鍵字基本有序時,直接插入排序的效率很高 希爾排序思想 將整個待排記錄分割為若干子串行分別進行直接插入排序,待整個序列中的記錄基本有序時,再對全體記錄進行一次直接插入排序,就可以完成整個排序工作 增量序列中的值沒有除1以外的公因子,且最後乙個增量必須等於1 子串行的構成不是逐...