zoukankan      html  css  js  c++  java
  • SDUT 3403 数据结构实验之排序六:希尔排序

    数据结构实验之排序六:希尔排序

    Time Limit: 1000MS Memory Limit: 65536KB

    Problem Description

    我们已经学习了各种排序方法,知道在不同的情况下要选择不同的排序算法,以期达到最好的排序效率;对于待排序数据来说,若数据基本有序且记录较少时, 直接插入排序的效率是非常好的,希尔排序就是针对一组基本有序的少量数据记录进行排序的高效算法。你的任务是对于给定的数据进行希尔排序,其中增量dk=n/(2^k)(k=1,2,3……)

    Input

    连续输入多组数据,每组输入数据的第一行给出一个正整数N(N <= 10000),随后连续给出N个整数表示待排序关键字,数字间以空格分隔。

     

    Output

    输出dk=n/2和dk=1时的结果。

    Example Input

    10
    10 9 8 7 6 5 4 3 2 1
    10
    -5 9 7 -11 37 -22 99 288 33 66

    Example Output

    5 4 3 2 1 10 9 8 7 6
    1 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

    DQE:

    插入排序-->小修改后即为希尔排序233

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cmath>
     4 
     5 int f[1010],n;
     6 
     7 int dk(int n,int k)
     8 {
     9     return n/(int)pow(2,k);
    10 }
    11 
    12 int main()
    13 {
    14     while(scanf("%d",&n)!=EOF)
    15     {
    16         int i;
    17         for(i=1;i<=n;i++)
    18             scanf("%d",f+i);
    19         int k,d;
    20         for(k=1;d=dk(n,k),d>=1;k++)
    21         {
    22             for(i=d;i<=n;i++)
    23             {
    24                 f[0]=f[i];
    25                 int j=i-d;
    26                 while(j>0&&f[j]>f[0])
    27                 {
    28                     f[j+d]=f[j];
    29                     j-=d;
    30                 }
    31                 f[j+d]=f[0];
    32             }
    33             if(d==1||d==n/2)
    34             {
    35                 for(i=1;i<=n;i++)
    36                     printf("%d%c",f[i],i==n?'
    ':' ');
    37             }
    38         }
    39 
    40     //    for(i=1;i<=n;i++)
    41     //        printf("%d%c",f[i],i==n?'
    ':' ');
    42     }
    43     return 0;
    44 }
    45 
    46 /***************************************************
    47 User name: ***
    48 Result: Accepted
    49 Take time: 0ms
    50 Take Memory: 168KB
    51 Submit time: 2016-12-07 17:56:00
    52 ****************************************************/
  • 相关阅读:
    VPC/VM/VBOX安装GHOST版的无法启动系统
    在虚拟机中使用Ghost系统盘安装
    用vmware安装gho文件心得
    VC中Error spawning cl.exe错误的解决方法.
    C语言屏幕打印,再删除打印的内容
    bat根据星期启动程序
    ARP命令详解
    bat生成vbs通过注册表禁用或启用USB端口
    OracleDesigner学习笔记1――安装篇
    MarkMonitor 目前最安全的域名注册商,因此,世界500强网站中的22%域名托管于markmonitor公司
  • 原文地址:https://www.cnblogs.com/Leroscox/p/6142202.html
Copyright © 2011-2022 走看看