在看完快速排序法之后,又对希尔排序法展开攻势,看了好长时间没懂,之后看个大概开始去写代码,虽然写出来了但是不够简洁,比网上的例子多了个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);
}