希爾排序(shell sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本。
public
static
int shellsort(int a)
// 希爾排序
時間複雜度:希爾排序的時間複雜度與增量序列的選取有關,例如希爾增量時間複雜度為o(n²),而hibbard增量的希爾排序的時間複雜度為o(
空間複雜度:
o(1)
穩定性:
不穩定希爾排序沒有快速排序演算法快 o(n(logn)),因此中等大小規模表現良好,對規模非常大的資料排序不是最優選擇。但是比o(
排序演算法(二) 希爾排序
主要思想 先將待排序列分割成若干個子串行,在子串行內分別進行直接插入排序,待整個序列基本有序時,再對全體記錄進行直接插入排序。例如 第一趟 d 5,將所有相距為 5 的記錄分為一組,從而將整個序列分割成了 5 個子序列。第二趟 d 2,將所有相距為 2 的記錄分為一組,從而將整個序列分割成了8 個子...
排序演算法 二 希爾排序
希爾排序是1959 年由d.l.shell 提出來的,相對直接插入排序有較大的改進。希爾排序又叫縮小增量排序 基本思想 先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄 基本有序 時,再對全體記錄進行依次直接插入排序。操作方法 選擇乙個增量序列t1,t2,tk,其中...
排序演算法 希爾排序
如果乙個排序演算法,每次只把諸專案移動乙個位置,則它的平均執行時間至少要和n2成比例.因為在這個排序演算法執行的過程當中,每個記錄平均都必須遍歷n 3個位置,因此如果要對直接插入排序進行有效的,實質性的改進的話,就要有一種演算法,它可以使記錄做長距離的跳躍,而不是一步一步的挪動.希爾排序也是一種插入...