2007winter

做自己真心想做的事,你就没事了

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

希尔排序是一种插入排序方法,实际上是一种分组插入方法。其基本思想是:先取一个小于n的整数d1作为第一个增量,所有距离为d1的倍数的记录放在同一个组中,在各组内进行直接插入排序;然后,取第二个增量d2<d1,重复上述的分组和排序,直至所取的增量dt=1,即所有记录放在同一组中进行直接插入排序为止。

希尔排序是不稳定的。

代码:

#include <iostream>
using namespace std;

void shellsort(double R[],int n)
{
    int i,j,increment;
    double temp;
    increment=n/2;

    while (increment>0)
    {
        for (j=increment;j<=n-1;j++)
        {
            temp=R[j];
            i=j-increment;
            while ((i>=0)&&(R[i]>temp))
            {
                R[i+increment]=R[i];
                i=i-increment;
            }
            R[i+increment]=temp;
        }
        increment=increment/2;
    }

    return;

}

int main()
{
    double a[10];
    int i;

    cout<<"输入原始序列:"<<endl;
    for (i=0;i<10;i++)
    {
        cin>>a[i];
    }
    cout<<endl;

    shellsort(a,10);
    cout<<"排序后:"<<endl;
    for (i=0;i<10;i++)
    {
        cout<<a[i]<<" ";
    }
    cout<<endl;

    return 0;

}

 

posted on 2012-06-08 10:58  2007winter  阅读(121)  评论(0)    收藏  举报