给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。

本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:

  • 数据1:只有1个元素;
  • 数据2:11个不相同的整数,测试基本正确性;
  • 数据3:103个随机整数;
  • 数据4:104个随机整数;
  • 数据5:105个随机整数;
  • 数据6:105个顺序整数;
  • 数据7:105个逆序整数;
  • 数据8:105个基本有序的整数;
  • 数据9:105个随机正整数,每个数字不超过1000。

    输入格式:

    输入第一行给出正整数N(≤),随后一行给出N个(长整型范围内的)整数,其间以空格分隔。

    输出格式:

    在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。

    输入样例:

    11
    4 981 10 -17 0 -20 29 50 8 43 -5
    

    输出样例:

    -20 -17 -5 0 4 8 10 29 43 50 981
  • #include<cstdio>
    const int maxn = 100010;void Bubble_sort(long* a,int n);
    void Insertion_sort(long* a,int n);
    void Select_sort(long *a,int n);
    void Shell_sort(long* a,int n);
    void Shell_sedgewick(long* a,int n);
    //快排,归并,堆排序 int main(){int n;scanf("%d",&n);long a[maxn];for(int i = 0; i < n; i++){scanf("%ld",&a[i]);}//Bubble_sort(a,n);//Insertion_sort(a,n);//Select_sort(a,n);//Shell_sort(a,n);
        Shell_sedgewick(a,n);for(int i = 0; i < n; i++){if(i == 0) printf("%ld",a[i]);else printf(" %ld",a[i]); }return 0;
    }//冒泡排序
    void Bubble_sort(long *a,int n){bool flag;long temp;for(int i = n-1; i > 0; i--){flag = false;for(int j = 0; j < i; j++){if(a[j] > a[j+1]){temp = a[j];a[j] = a[j+1];a[j+1] = temp;flag = true;}}if(flag == false) break;}
    }//插入排序
    void Insertion_sort(long* a,int n){int i,j;long temp;for(i = 1; i < n; i++){temp = a[i];for(j = i; j > 0 && a[j - 1] > temp; j--) a[j] = a[j - 1];a[j] = temp;}
    }//选择排序
    void Select_sort(long* a,int n){int i,j,k;long temp;for( i = 0; i < n; i++){temp = a[i];for(j = i + 1; j < n; j++){if(a[j] < temp){temp = a[j];k = j;}}a[k] = a[i];a[i] = temp;}
    }//希尔-自增排序
    void Shell_sort(long*a ,int n){int i,j,d;long temp;for(d = n/2; d > 0; d /= 2){for(i = d; i < n; i++){temp = a[i];for(j = i; j >= d && a[j - d] > temp; j -= d)a[j] = a[j - d];a[j] = temp;}}
    }//希尔-数组排序
    void Shell_sedgewick(long* a,int n){int i,j,d,si;int sedgewick[] = {929,505,209,109,41,19,5,1,0};long temp;for(si = 0; sedgewick[si] >= n; si++);for(; sedgewick[si] > 0; si++){d = sedgewick[si];for(i = d; i < n; i++){temp = a[i];for(j = i; j >= d && a[j - d] > temp; j -= d) a[j] = a[j - d];a[j] = temp;}}
    }
    

    void Heap_sort(long* a,int n){long temp;int i;for(i = (n-2)/2; i >= 0; i--){percdown(a,n,i);}for(i = n - 1; i > 0; i--){temp = a[0];a[0] = a[i];a[i] = temp;percdown(a,i,0);}
    }
    void percdown(long* a,int n,int i){long x = a[i];int child;for(; i * 2 + 1 <= n - 1; i = child){child = 2 * i + 1;if(child < n - 1 && a[child + 1] > a[child]) child++;if(a[child] <= x) break;else a[i] = a[child];}a[i] = x;
    }void Merge_sort(long*a ,int n){long* tmp = (long*)malloc(n*sizeof(long));msort(a,tmp,0,n-1);free(tmp);
    }
    void msort(long*a,long* tmp,int start,int end){int middle;if(start < end){middle = (start+end)/2;msort(a,tmp,start,middle);msort(a,tmp,middle+1,end);merge(a,tmp,start,end,middle);}
    }
    void merge(long* a,long* tmp,int start,int end,int middle){int l,s,r;l = start;s = start;r = middle + 1;while(l <= middle && r <= end){if(a[l] < a[r]) tmp[s++] = a[l++];else tmp[s++] = a[r++];}while(l <= middle) tmp[s++] = a[l++];while(r <= end) tmp[s++] = a[r++];for(;start <= end; start++)a[start] = tmp[start];
    }

转载于:https://www.cnblogs.com/wanghao-boke/p/9997610.html

09-排序1 排序 (25 分)相关推荐

  1. 7-30 jmu-JavaPython-统计一段文字中的单词个数并按单词的字母顺序排序后输出 (25 分)

    7-30 jmu-Java&Python-统计一段文字中的单词个数并按单词的字母顺序排序后输出 (25 分) 现需要统计若干段文字(英文)中的不同单词数量. 如果不同的单词数量不超过10个,则 ...

  2. 【Java】7-5 实验室使用排期 (25分)(List排序)

    7-5 实验室使用排期 (25分)(List排序) 受新冠疫情影响,当前大家的活动都必须注意保持充分的社交距离,国家实验室的使用也同样受到了严格的限制.假设规定任何一个时间点上,实验室内最多只能有 1 ...

  3. 7-1 模拟EXCEL排序 (25 分)

    7-1 模拟EXCEL排序 (25 分) Excel可以对一组纪录按任意指定列排序.现请编写程序实现类似功能. 输入格式: 输入的第一行包含两个正整数N(≤10 ​5 ​​ ) 和C,其中N是纪录的条 ...

  4. 7-47 对称排序 (25 分)

    7-47 对称排序 (25 分) 你供职于由一群丑星作为台柱子的信天翁马戏团.你刚完成了一个程序编写,它按明星们姓名字符串的长度非降序(即当前姓名的长度至少与前一个姓名长度一样)顺序输出他们的名单.然 ...

  5. R7-9 模拟EXCEL排序 (25 分)

    R7-9 模拟EXCEL排序 (25 分) Excel可以对一组纪录按任意指定列排序.现请编写程序实现类似功能. 输入格式: 输入的第一行包含两个正整数N(≤105) 和C,其中N是纪录的条数,C是指 ...

  6. 7-210 英文单词排序 (25 分)

    7-210 英文单词排序 (25 分) 本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出.如果长度相同,按照输入的顺序不变. 输入格式: 输入为若干英文单词,每行一个,以#作为输 ...

  7. 7-207 排序 (25 分)

    7-207 排序 (25 分) 给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果. 本题旨在测试各种不同的排序算法在各种数据情况下的表现.各组测试数据特点如下: 数据1:只有1个元素: 数 ...

  8. 【CCCC】L2-021 点赞狂魔 (25分),,模拟水题,map数组,间接排序

    problem L2-021 点赞狂魔 (25分) 微博上有个"点赞"功能,你可以为你喜欢的博文点个赞表示支持.每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了 ...

  9. 【CCCC】L2-009 抢红包 (25分),,间接排序,比较double大小

    problem L2-009 抢红包 (25分) 没有人没抢过红包吧-- 这里给出N个人之间互相发红包.抢红包的记录,请你统计一下他们抢红包的收获. 输入格式: 输入第一行给出一个正整数N(≤10 ​ ...

  10. 【2020模拟考试T5】【PAT乙】1035 插入与归并 (25分) 两种排序的sort写法

    problem 1035 插入与归并 (25分) 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位 ...

最新文章

  1. Ipython中如何输入汉字
  2. 不恰当使用read会造成服务器阻塞
  3. C# List泛型集合中的GroupBy用法
  4. php 伪静态规则,在线将Apache Rewrite Rules伪静态规则转换为Nginx Rewrite伪静态规则...
  5. SAP License:2021年最新FICO面试答案
  6. 2.5 分类模型评估指标—AUC与ROC及绘制混淆矩阵与ROC曲线
  7. 锐捷客户端 开机不能自动联网 无法启动DHCP Client服务
  8. Linux下安装PyQt4
  9. 服务器cmd升级系统命令,02-软件升级操作指导(命令行版)
  10. Silverlight轻量级查询对比
  11. 在Ubuntu下安装vim
  12. Python实践—微信远程控制电脑
  13. 计算机无法设置壁纸黑屏,电脑界面为什么无法换壁纸 一直黑屏 但有图标
  14. sv常用的系统function/task(一)
  15. easyExcel的复杂表头多级表头导入
  16. ideaVim 使用总结
  17. 972信息检索 | 第一章 信息检索概述
  18. 中国科大的毕业生去向
  19. 车贷行业配备GPS北斗定位模块的意义
  20. win10关闭(更新并关机)与(恢复更新)

热门文章

  1. JAVA多线程和并发基础面试问答(转载)
  2. Android版本演进中的兼容性问题
  3. 可能用得上的jquery 插件
  4. C语言一个小小的问题引起的对指针的探究。。。
  5. 英特尔x722网卡驱动_产品详情 | 从核心到边缘,英特尔加速5G网络基础设施建设...
  6. php代码清除空格注解,去除php注释和去除空格函数分享
  7. mysql 平均值 排序_MySQL按平均两个平均值排序
  8. hls fifo_HLS优化方法DATAFLOW你用了吗
  9. 【设计模式之美】<Reading Notes>抽象类与接口
  10. lastindexof方法_Java Vector lastIndexOf()方法与示例