排序算法之希尔排序算法---c++实现

来源:互联网 发布:windows mobile刷安卓 编辑:程序博客网 时间:2024/06/18 05:36

看了一下希尔排序算法的思想,终于可以自己用代码把它写出来。代码虽然冗长,但总的来说,基本能把希尔排序的思体现出来。

总的思想是:把一个数据集合依次进行减半分组,然后分别对每组进行直接插入排序。

#include<iostream>using namespace std;void ShellSort(int arry[], int n){ int i, j, gap; int k, temp, l; for (gap = n / 2; gap > 0; gap /= 2)  //取步长 {  for (i = 0; i < gap; i++)  //进行gap次直接插入排序  {   for (j = i + gap; j < n; j += gap)   {    k = j - gap;    temp = arry[j];    //从小到大进行排序    while (k >= 0 && arry[j] < arry[k])     k -= gap;    //到这一步,说明找到插入的位置(k + gap)了    //移动插入    for (l = j - gap; l > k; l -= gap)     arry[l + gap] = arry[l];    arry[k+gap] = temp;   }  } }}int main(){ cout << "排序前的数据为:"; int a[10], i; for (i = 0; i < 10; i++) {  a[i] = rand() % 10 + 1;  cout << a[i] << " "; } cout << endl; cout << "排序后的数据为:"; ShellSort(a, 10); for (i = 0; i < 10; i++)    cout << a[i] << " "; cout << endl; return 0;}


0 0
原创粉丝点击