(29)希尔排序

来源:互联网 发布:广州网络推广经理招聘 编辑:程序博客网 时间:2024/05/21 22:50

基本思想是:将待排序的记录划分成几组,从而减少参与直接插入排序的数据量,当经过几次分组排序后,记录的排序已经基本有序,再对所有的记录实施最后的直接插入排序。

希尔对记录的分组,不是将相邻记录分为一组,而是将相隔一定距离的记录分为一组。

希尔排序适合用于待排序数目较大的情况,而且希尔排序的性能与选定增量序列有关。

代码:

#include<iostream>using namespace std;void shellSort(int num[],int n) {for (int d = n / 2; d >= 1; d /= 2) {for (int i = 0 + d; i < n; i++) {int tem = num[i];int j = i - d;while (j >= 0 && tem < num[j]) {num[j + d] = num[j];j -= d;}num[j + d] = tem;}}}void main(){int num[12] = { 10,6,2,33,15,12,23,76,1,54,22,9 };shellSort(num, 12);for (auto x : num) {cout << x << " ";}cout << endl;system("pause");}


0 0
原创粉丝点击