09-排序1 排序 (25 分)
给定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 分)相关推荐
- 7-30 jmu-JavaPython-统计一段文字中的单词个数并按单词的字母顺序排序后输出 (25 分)
7-30 jmu-Java&Python-统计一段文字中的单词个数并按单词的字母顺序排序后输出 (25 分) 现需要统计若干段文字(英文)中的不同单词数量. 如果不同的单词数量不超过10个,则 ...
- 【Java】7-5 实验室使用排期 (25分)(List排序)
7-5 实验室使用排期 (25分)(List排序) 受新冠疫情影响,当前大家的活动都必须注意保持充分的社交距离,国家实验室的使用也同样受到了严格的限制.假设规定任何一个时间点上,实验室内最多只能有 1 ...
- 7-1 模拟EXCEL排序 (25 分)
7-1 模拟EXCEL排序 (25 分) Excel可以对一组纪录按任意指定列排序.现请编写程序实现类似功能. 输入格式: 输入的第一行包含两个正整数N(≤10 5 ) 和C,其中N是纪录的条 ...
- 7-47 对称排序 (25 分)
7-47 对称排序 (25 分) 你供职于由一群丑星作为台柱子的信天翁马戏团.你刚完成了一个程序编写,它按明星们姓名字符串的长度非降序(即当前姓名的长度至少与前一个姓名长度一样)顺序输出他们的名单.然 ...
- R7-9 模拟EXCEL排序 (25 分)
R7-9 模拟EXCEL排序 (25 分) Excel可以对一组纪录按任意指定列排序.现请编写程序实现类似功能. 输入格式: 输入的第一行包含两个正整数N(≤105) 和C,其中N是纪录的条数,C是指 ...
- 7-210 英文单词排序 (25 分)
7-210 英文单词排序 (25 分) 本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出.如果长度相同,按照输入的顺序不变. 输入格式: 输入为若干英文单词,每行一个,以#作为输 ...
- 7-207 排序 (25 分)
7-207 排序 (25 分) 给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果. 本题旨在测试各种不同的排序算法在各种数据情况下的表现.各组测试数据特点如下: 数据1:只有1个元素: 数 ...
- 【CCCC】L2-021 点赞狂魔 (25分),,模拟水题,map数组,间接排序
problem L2-021 点赞狂魔 (25分) 微博上有个"点赞"功能,你可以为你喜欢的博文点个赞表示支持.每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了 ...
- 【CCCC】L2-009 抢红包 (25分),,间接排序,比较double大小
problem L2-009 抢红包 (25分) 没有人没抢过红包吧-- 这里给出N个人之间互相发红包.抢红包的记录,请你统计一下他们抢红包的收获. 输入格式: 输入第一行给出一个正整数N(≤10 ...
- 【2020模拟考试T5】【PAT乙】1035 插入与归并 (25分) 两种排序的sort写法
problem 1035 插入与归并 (25分) 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位 ...
最新文章
- Ipython中如何输入汉字
- 不恰当使用read会造成服务器阻塞
- C# List泛型集合中的GroupBy用法
- php 伪静态规则,在线将Apache Rewrite Rules伪静态规则转换为Nginx Rewrite伪静态规则...
- SAP License:2021年最新FICO面试答案
- 2.5 分类模型评估指标—AUC与ROC及绘制混淆矩阵与ROC曲线
- 锐捷客户端 开机不能自动联网 无法启动DHCP Client服务
- Linux下安装PyQt4
- 服务器cmd升级系统命令,02-软件升级操作指导(命令行版)
- Silverlight轻量级查询对比
- 在Ubuntu下安装vim
- Python实践—微信远程控制电脑
- 计算机无法设置壁纸黑屏,电脑界面为什么无法换壁纸 一直黑屏 但有图标
- sv常用的系统function/task(一)
- easyExcel的复杂表头多级表头导入
- ideaVim 使用总结
- 972信息检索 | 第一章 信息检索概述
- 中国科大的毕业生去向
- 车贷行业配备GPS北斗定位模块的意义
- win10关闭(更新并关机)与(恢复更新)
热门文章
- JAVA多线程和并发基础面试问答(转载)
- Android版本演进中的兼容性问题
- 可能用得上的jquery 插件
- C语言一个小小的问题引起的对指针的探究。。。
- 英特尔x722网卡驱动_产品详情 | 从核心到边缘,英特尔加速5G网络基础设施建设...
- php代码清除空格注解,去除php注释和去除空格函数分享
- mysql 平均值 排序_MySQL按平均两个平均值排序
- hls fifo_HLS优化方法DATAFLOW你用了吗
- 【设计模式之美】<Reading Notes>抽象类与接口
- lastindexof方法_Java Vector lastIndexOf()方法与示例