数据结构实验之排序六:希尔排序
来源:互联网 发布:python基本数据类型 编辑:程序博客网 时间:2024/06/05 08:04
数据结构实验之排序六:希尔排序
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
我们已经学习了各种排序方法,知道在不同的情况下要选择不同的排序算法,以期达到最好的排序效率;对于待排序数据来说,若数据基本有序且记录较少时, 直接插入排序的效率是非常好的,希尔排序就是针对一组基本有序的少量数据记录进行排序的高效算法。你的任务是对于给定的数据进行希尔排序,其中增量dk=n/(2^k)(k=1,2,3……)
Input
连续输入多组数据,每组输入数据的第一行给出一个正整数N(N <= 10000),随后连续给出N个整数表示待排序关键字,数字间以空格分隔。
Output
输出dk=n/2和dk=1时的结果。
Example Input
1010 9 8 7 6 5 4 3 2 110-5 9 7 -11 37 -22 99 288 33 66
Example Output
5 4 3 2 1 10 9 8 7 61 2 3 4 5 6 7 8 9 10-22 9 7 -11 37 -5 99 288 33 66-22 -11 -5 7 9 33 37 66 99 288
Hint
#include <iostream>
using namespace std;
int n;
int a[10001];
void Ssort(int k)
{
int i,j;
for(i=k;i<n;i++)
{
int t=a[i];//摸一张牌
for(j=i;j>=k && a[j-k]>t;j-=k)
{
a[j]=a[j-k];//移出空位
}
a[j]=t;//新牌落位
}
}
int main()
{
std::cin.tie(0);
ios::sync_with_stdio(false);
while(cin>>n)
{
int i;
for(i=0;i<n;i++)
{
cin>>a[i];
}
Ssort(n/2);
for(i=0;i<n-1;i++)
{
cout<<a[i]<<" ";
}
cout<<a[n-1]<<endl;
Ssort(1);
for(i=0;i<n-1;i++)
{
cout<<a[i]<<" ";
}
cout<<a[n-1]<<endl;
}
return 0;
}
阅读全文
0 0
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- 数据结构实验之排序六:希尔排序
- Python:Invalid environment marker:python_version<2.7问题解决方案
- Docker 入门笔记 4
- MySql基础知识图谱
- 最小路径和
- 软件定义存储的万里长征迈出坚实一步
- 数据结构实验之排序六:希尔排序
- CSS3中SVG简单应用
- 新版友盟推送v3.1.5遇到的问题
- C#创建,发布WebService详细教程
- 一步一步分析讲解神经网络基础-gradient descent algorithm
- 关于一个exe调用另外一个exe如何调试
- 雇员管理系统-SSH版(三)
- 只有2~3年左右的开发经验,为什么年薪就可以达到50万+?
- 大数据WEB阶段Spring框架 AOP面向切面编程(二)