数据结构与算法之四希尔排序法
来源:互联网 发布:动画建模软件 编辑:程序博客网 时间:2024/05/16 03:09
希尔排序法的思想是:先取一个小于数组长度n的数d1作为第一个增量,把数组里面的n个数分成d1个组,数组中所有距离为d1的数都放在同一个小组中,分组过程见下图,再在各组里进行直接插入排序,然后取第二个增量d2<d1,重复上面的分组与排序,直至夺取的增量dt=1(dt<....<d2<d1)即所有的数放入同一组中进行直插排序为止。
整体程序如下:
#include<iostream>
using namespace std;
void Shell_pass1(int a[],int d);
void Shell_sort(int a[]);
void Shell_pass1(int a[],int d)
{//希尔排序中的一趟排序,d为当前增量
int i,temp,j;
for(i=d;i<7;i++)
if(a[i]<a[i-d])//将R[d..n]分别插入各组当前的有序区
{
temp=a[i];
j=i-d;
do{
a[j+d]=a[j];
j=j-d;//查找前一记录
} while(j>0&&temp<a[j]);
a[j+d]=temp;
}
}
void Shell_sort(int a[])
{
int increase=7;//增量初值
do
{
increase=increase/3+1;//求下一增量
Shell_pass1(a,increase);//一趟增量为increment的Shell插入排序
} while (increase>1);
}
int main()
{
int i,a[100];
cout<<"Please input 7 numbers: ";
for (i=0;i<7;i++)
cin>>a[i];
cout<<"The result of resort: ";
Shell_sort(a);
for (i=0;i<7;i++)
cout<<a[i]<<' ';
}
- 数据结构与算法之四希尔排序法
- 【数据结构和算法】排序算法之四:希尔排序
- 【数据结构与算法】希尔排序
- 【数据结构与算法】希尔排序
- 数据结构与算法之六(希尔排序,非稳定排序)
- 数据结构之排序(四)希尔排序
- 数据结构与算法之高级排序(希尔/堆)<十一>
- 蛙步学排序算法之四 - 希尔排序
- 【算法-排序之四】希尔排序
- 【算法-排序之四】希尔排序
- 数据结构之插入排序与希尔排序
- python数据结构与算法 33 希尔排序
- 算法与数据结构(五)--希尔排序
- 【数据结构与算法设计】希尔排序
- 数据结构与算法简记:希尔排序
- Java数据结构与算法《八》希尔排序
- 数据结构与算法(八)希尔排序
- 数据结构与算法三:希尔排序
- Centos下搭建LAMP
- WindowBuilder
- hdu 2888 Check Corners(二维rmq)
- 【飞秋教程】群聊天/群共享/群日志
- Oracle delete之后高水位线的问题解决
- 数据结构与算法之四希尔排序法
- 字符串乱码的处理
- C#中任意类型数据转成JSON格式
- 杭电2067-小兔的棋盘
- debug的使用步骤
- PHP网站页面静态化的生成方法介绍
- KingPager,自己做的分页控件,纯JS,支持所有语言
- android listview
- centos 6.0 出现no suitable device found