您的位置:首页 > 运维架构 > Shell

希尔排序(shell sort)

2017-10-04 20:14 363 查看
希尔排序是直接插入排序的改进版本,实质是一种分组插入方法

#include <iostream>
using namespace std;
void ShellSort(int a[],int n)
{
int length = n;
for(int i=length/2;i>0;i=i/2)
//改进:前后记录位置的增量是i,当i==1时,是直接插入排序
{
for(int j=i;j<length;j++)
{
int temp = a[j];
if(temp < a[j-i])
{
for(int k=0;k<j;k+=i)
{
if(temp<a[k])
{
temp = a[k];
a[k] = a[j];
a[j] = temp;
}
}
}
}
}
}
int main(int argc, char const *argv[])
{
int a[8] = {20,6,23,12,68,16,1,10};
ShellSort(a,8);
for(int i=0;i<8;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: