排序系列--希尔排序
来源:互联网 发布:吉他扒谱软件 编辑:程序博客网 时间:2024/05/17 01:40
前面说过,直接插入排序时希尔排序的一个特例。是增量为1的希尔排序。
思想:以相差同一个increment增量的记录为一个子序列,将这个子序列进行排序。汇集多个子序列,然后改变increment的值(减小),这样形成新的子序列,此时的子序列的记录比上一次的多,使更多的记录基本有序。如此不断,知道最后将整体所有的记录以increment为1,进行直接插入排序。(基本有序,保证了小数基本在前,大数基本在后,这样移动不会太频繁)
#include <iostream>
using namespace std;
#define MAXSIZE 20
void shellSort(int a[],int len)
{
int i;
int j;
int tmp;
int increment;
increment=len;
do{
increment=increment/3 + 1;
for(i=increment+1; i<=len; i++)
{
if(a[i] < a[i-increment])
{
tmp=a[i];
for(j=i-increment; j>0&& tmp<a[j]; j=j-increment) // 关键字较小的记录,不是一个一个的移动,而是跳跃式的移动,从而使得每次完成一轮循环后,就朝着有序靠近些。
{
a[j+increment] = a[j];
}
a[j+increment] = tmp;
}
}
}while(increment > 1);
for (i=1; i<=len; i++)
{
cout<<a[i]<<endl;
}
}
int main()
{
int arr[MAXSIZE];
int n;
int i;
cout<<"输入数据的个数"<<endl;
cin>>n;
cout<<"输入数据:"<<endl;
for(i=1; i<=n; i++)
{
cin>> arr[i];
}
shellSort(arr, n);
return 0;
}
- 排序系列--希尔排序
- 排序系列--希尔排序
- 排序系列之希尔排序
- 七大排序算法系列之希尔排序
- 排序算法系列之希尔排序
- 基本排序系列之希尔排序
- 排序算法系列之希尔排序
- 排序算法系列——希尔排序
- 排序算法系列---希尔排序(C++)
- 排序总结系列四:希尔排序
- PHP排序算法系列:希尔排序
- 排序算法系列七(希尔排序也称shell排序)
- 内部排序系列 之 插入排序与shell(希尔)排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- Android 平台 Button控件如何实现按下效果 (变换风格)
- 路由器和猫,集线器,交换机的区别
- Intraweb 12.2.12.1两个期待已久的新特征
- Android四种Activity的加载模式
- Linux下安装mysql-5.6.4
- 排序系列--希尔排序
- java.lang.SecurityException: Prohibited package
- Android视频教程
- svn异常—Aborting commit: 'XXXXXXXX' remains in conflict
- Java 访问权限控制
- 5大搜索引擎营销误区
- IBMPower服务器绿色节能方案简述
- 关于onInterceptTouchEvent()和onTouchEvent()!
- hadoop集群搭建--于虚拟机中