希尔排序法

在看完快速排序法之后,又对希尔排序法展开攻势,看了好长时间没懂,之后看个大概开始去写代码,虽然写出来了但是不够简洁,比网上的例子多了个for循环,不知道叫不叫布尔排序法。
之后再看网上的例子比之前明白多了,看着别人的代码简化我自己的代码,最后慢慢的就懂了。
我参考的文章链接(介绍的很详细):点击直达

#include<iostream>
using namespace std;
void out(int s[])//数组输出
{
    int y;
    for(y=0;y<10;y++)
        cout<<s[y]<<" ";
        cout<<endl;
}
void main()
{
    int s[10]={10,9,8,6,7,5,4,3,2,1};
    int end=9,start=0;//开始的下标和结束的下标
    int increment=end-start+1;//长度
    int i=0,temp=0;
    do//进行判断长度是否大于1
        {
        increment=increment/3;//
        for(i=start+increment;i<=end;i++)//参考插入法可理解
        {
            if(s[i-increment]>s[i])
            {
                 temp=s[i];
                 int j=i-increment;
                 do{
                     s[j+increment]=s[j];
                     j-=increment;
                    }while(j>=start&&s[j]>temp);
                   s[j+increment]=temp;
            }
        }
    }while(increment>1);
    out(s);
}

添加新评论

评论列表