資料結構 中的希爾 SheelSort 排序

2021-08-01 02:40:20 字數 934 閱讀 6785

希爾排序(shell sort)是

插入排序

的一種。也稱縮小增量排序,是

直接插入排序

演算法的一種更高效的改進版本。希爾排序是非

穩定排序

演算法。該方法實質上是一種分組插入方法。

該方法的基本思想是:先將整個待排元素序列分割成若干個子串行(由相隔某個「增量」的元素組成的)分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序(增量足夠小)時,再對全體元素進行一次直接插入排序。因為直接插入排序在元素基本有序的情況下(接近最好情況),效率是很高的,因此希爾排序在時間效率上比前兩種方法有較大提高。

畫出圖來解析:

**的實現:

#includeusing namespace std;

#includevoid sheelsort(int *a, size_t n)

a[end + gub] = tmp;

} gub /= 2; }}

void printarray(int *a, size_t n)

cout << endl;

}int main()

; int arr = ;

int n = sizeof(arr) / sizeof(arr[0]);

sheelsort(arr, n);

cout << "進行希爾排序後:";

printarray(arr, n);

system("pause");

return 0;

}

希爾排序後的結果為:

資料結構 希爾排序!!!

希爾排序是將一組資料進行分組,再將分組的資料進行排序,這樣資料就會逐漸的趨向有序,當分組的個數為1的時候將整個陣列排序一遍,那麼整個陣列就排序好了。基本思想 先將整個待排元素序列分割成若干個子串行 由相隔某個 增量 的元素組成的 分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基...

資料結構 希爾排序

1 希爾排序是在直接插入排序的基礎上改良而來的,直接插入排序需要記錄基本有序的情況下才能變得很高效,希爾排序便是採取跳躍分割的策略,將相距 增量 的元素組成乙個子串行,這樣才能保證最後進行直接插入排序時的序列是基本有序的。希爾排序的時間複雜度是 2 希爾排序實現演算法 include include...

資料結構 希爾排序

希爾排序是donald shell於1959年提出來的一種排序演算法,它是第一批突破這個時間複雜度的演算法之一。大話資料結構對這個演算法的講解,我看得一知半解的,之後網上找了下資料,發現維基百科對這個演算法的講解非常不錯,特在此整理一波。希爾排序是基於插入排序的以下兩點性質而提出改進方法的 先上個維...