数据排序 第三讲( 各种排序方法 结合noi题库1.10)
说了那么多种排序方法了,下面就来先做几个题吧
06:整数奇偶排序
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 
给定10个整数的序列,要求对其重新排序。排序要求: 1.奇数在前,偶数在后; 2.奇数按从大到小排序; 3.偶数按从小到大排序。 
- 输入
- 输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于100。
- 输出
- 按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。
- 样例输入
- 
4 7 3 13 11 12 0 47 34 98 
- 样例输出
- 
47 13 11 7 3 0 4 12 34 98 
- 来源
- 1873
法一 #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; ]; int main() { ;i<=;i++) scanf("%d",&a[i]); sort(a+,a+); ;i>=;i--) !=) cout<<a[i]<<" "; ;i<=;i++) ==) cout<<a[i]<<" "; ; }法二 #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int l,r; ],b[],c[];//b数组用来存偶数,c数组用来存奇数 int main() { ;i<=;i++) { scanf("%d",&a[i]); ==) { l++; b[l]=a[i]; } else { r++; c[r]=a[i]; } } sort(b+,b+l+); sort(c+,c+r+); ;i--) cout<<c[i]<<" "; ;i<=l;i++) cout<<b[i]<<" "; ; }07:合影效果- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
 - 描述
- 
小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)? 
- 输入
- 第一行是人数n(2 <= n <= 40,且至少有1个男生和1个女生)。
 后面紧跟n行,每行输入一个人的性别(男male或女female)和身高(浮点数,单位米),两个数据之间以空格分隔。
- 输出
- n个浮点数,模拟站好队后,拍照者眼中从左到右每个人的身高。每个浮点数需保留到小数点后2位,相邻两个数之间用单个空格隔开。
- 样例输入
- 
6 male 1.72 male 1.78 female 1.61 male 1.65 female 1.70 female 1.56 
- 样例输出
- 
1.65 1.72 1.78 1.70 1.61 1.56 
- 来源
- 医学部 2010 期末试题 李雁章
- 
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n,l,r; ],b[],c[]; int main() { scanf("%d",&n); ;i<=n;i++) { string k; cin>>k>>a[i]; if(k=="male") { l++; b[l]=a[i]; } if(k=="female") { r++; c[r]=a[i]; } } sort(b+,b+l+); sort(c+,c+r+); ;i<=l;i++) printf("%.2f ",b[i]); ;i--) printf("%.2f ",c[i]); ; }08:病人排队- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
 - 描述
- 
病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序: 
 1. 老年人(年龄 >= 60岁)比非老年人优先看病。
 2. 老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。
 3. 非老年人按登记的先后顺序看病。
- 输入
- 第1行,输入一个小于100的正整数,表示病人的个数;
 后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于10的字符串表示病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄,中间用单个空格隔开。
- 输出
- 按排好的看病顺序输出病人的ID,每行一个。
- 样例输入
- 
5 021075 40 004003 15 010158 67 021033 75 102012 30 
- 样例输出
- 
021033 010158 021075 004003 102012 
- 来源
 题解 #include<iostream> using namespace std; struct man { int i; string e; int s; }; int n; man a[]; int main() { int i,j; cin>>n; ; i<=n; i++) { a[i].i=i; cin>>a[i].e>>a[i].s; } ; i<=n-; i++) { ; j<=n; j++) &&a[i].s<) swap(a[i],a[j]); &&a[i].s>=&&a[j].s>a[i].s) swap(a[i],a[j]); &&a[i].s>=&&a[j].s==a[i].s&&a[j].i<a[i].i) swap(a[i],a[j]); &&a[i].s<&&a[j].i<a[i].i) swap(a[i],a[j]); } ; i<=n; i++) cout<<a[i].e<<endl; ; }09:明明的随机数- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
 - 描述
- 
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。 
- 输入
- 有2行,第1行为1个正整数,表示所生成的随机数的个数:N;
 第2行有N个用空格隔开的正整数,为所产生的随机数。
- 输出
- 也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
- 样例输入
- 
10 20 40 32 67 40 20 89 300 400 15 
- 样例输出
- 
8 15 20 32 40 67 89 300 400 
- 来源
- NOIP2006复赛 普及组 第一题
- 哦,这道题好像是纯桶排哦,有没有感觉到这些题low爆了
- 
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; int n,l; ]; int main() { scanf("%d",&n); ;i<=n;i++) { int k; scanf("%d",&k); ) { a[k]=; l++; } } cout<<l<<endl; ;i<=;i++) ) cout<<i<<" "; ; }
 
 
数据排序 第三讲( 各种排序方法 结合noi题库1.10)的更多相关文章
- 数据排序  第二讲( 各种排序方法    结合noi题库1.10)
		先来个题练练手吧! 例题 04:奖学金 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生 ... 
- 数据排序  第一讲( 各种排序方法    结合noi题库1.10)
		选择排序 1.基本思想:每一趟从待排序的数据元素选出最小或最大的一个元素,数按序排放在待排序的元素的最前端,直到全部待排序的元素排完 2.基本代码 px(int r[]) { ;i<n;i++) ... 
- PHP array_multisort() 函数详解 及 二维数组排序(模拟数据表记录按字段排序)
		一.先看最简单的情况. 有两个数组: $arr1 = array(1, 9, 5); $arr2 = array(6, 2, 4); array_multisort($arr1, $arr2); pr ... 
- MySQL使用 IN 查询取出数据排序问题(与in排序相同、不排序)
		MySQL使用 IN 查询取出数据排序问题(与in排序相同) 今天在项目中遇到一个问题,就是做一个最近浏览的功能,但是功能做出来了,取出数据时候要用到类似这么一条带in查询的sql语句, select ... 
- 1T数据快速排序!十种经典排序算法总结
		1 冒泡排序 每次循环都比较前后两个元素的大小,如果前者大于后者,则将两者进行交换.这样做会将每次循环中最大的元素替换到末尾,逐渐形成有序集合.将每次循环中的最大元素逐渐由队首转移到队尾的过程形似&q ... 
- mysql 查询数据时按照A-Z顺序排序返回结果集
		mysql 查询数据时按照A-Z顺序排序返回结果集 $sql = "SELECT * , ELT( INTERVAL( CONV( HEX( left( name, 1 ) ) , 16, ... 
- 排序图解:js排序算法实现
		之前写过js实现数组去重, 今天继续研究数组: 排序算法实现. 排序是数据结构主要内容,并不限于语言主要在于思想:大学曾经用C语言研究过一段时间的排序实现, 这段时间有空用JS再将排序知识点熟悉一遍. ... 
- 归并排序 & 计数排序 & 基数排序 & 冒泡排序 & 选择排序 ----> 内部排序性能比较
		2.3 归并排序 接口定义: int merge(void* data, int esize, int lpos, int dpos, int rpos, int (*compare)(const v ... 
- C++ STL中Map的按Key排序和按Value排序
		map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区 分),我们用map来进 ... 
随机推荐
- timeSetEvent()函数
			原文链接地址:http://www.cnblogs.com/kangwang1988/archive/2010/09/16/1827872.html 微软公司在其多媒体Windows中提供了精确定时器 ... 
- [Leetcode] Best time to buy and sell stock iii 买卖股票的最佳时机
			Say you have an array for which the i th element is the price of a given stock on day i. Design an a ... 
- BZOJ 2500 幸福的道路(race) 树上直径+平衡树
			structHeal { priority_queue<int> real; priority_queue<int> stack; void push(int x){ real ... 
- 用PHP迭代器来实现一个斐波纳契数列
			斐波纳契数列通常做法是用递归实现,当然还有其它的方法.这里现学现卖,用PHP的迭代器来实现一个斐波纳契数列,几乎没有什么难度,只是把类里的next()方法重写了一次.注释已经写到代码中,也是相当好理解 ... 
- Any gotchas at all with converting from MyISAM to InnoDB?
			Q: I'm ready to move from MyISAM to InnoDB but wanted to know if there was a full list of things to ... 
- SLF4J 与Log4J
			为什么要使用SLF4J而不是Log4J 每一个Java程序员都知道日志对于任何一个Java应用程序,尤其是服务端程序是至关重要的,而很多程序员也已经熟悉各种不同的日志库如java.util.loggi ... 
- css3 新旧伸缩盒的异同
			由于不需要理会IE浏览器,伸缩盒(flexible box)移动端开发中非常好用! 工作中使用APICLOUD开发手机App,老板要求兼容到安卓2.3(新版的需要安卓4.4以上),所以一直使用的是旧版 ... 
- 用eval转化对象
			var str = '{"name": "tom","age": 12,"sex": "man"}' ... 
- java生成API文档
			1.选择项目右键-Export\javadoc 2.选择生成工具在jdk安装目录下jdk\bin\javadoc.exe 3.在Eclipse里 export 选 JavaDoc,在向导的最后一页的E ... 
- Restful 接口权限控制
			前言 有人说,每个人都是平等的: 也有人说,人生来就是不平等的: 在人类社会中,并没有绝对的公平, 一件事,并不是所有人都能去做: 一样物,并不是所有人都能够拥有. 每个人都有自己的角色,每种角色都有 ... 
