数据排序 第三讲( 各种排序方法 结合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来进 ...
随机推荐
- HDU 6201 transaction transaction transaction(拆点最长路)
transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 132768/1 ...
- 实际上ECMAScript中并没有对类的定义
首先,我们用一个经典例子来简单阐述一下ECMAScript中的继承机制. 在几何学上,实质上几何形状只有两种,即椭圆形(是圆形的)和多边形(具有一定数量的边).圆是椭圆的一种,它只有一个焦点.三角形. ...
- linux bash学习(一)
1.请你以 read 指令的用途,撰写一个 script ,他可以让使用者输入:1. first name 与 2. last name, 最后并且在屏幕上显示:“Your full name is: ...
- HDU 2844 二进制优化的多重背包
Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- getActionBar为null的解决以及ActionBar的Back键
http://blog.csdn.net/lincyang/article/details/46286895
- gogole调试请求体的数据怎么知道
在network---->header->request payload中看 详细情况见下图所示:
- 【Foreign】哈密顿回路 [MIM]
哈密顿回路 Time Limit: 15 Sec Memory Limit: 256 MB Description Input Output Sample Input 4 10 0 3 2 1 3 ...
- 【BZOJ2527】【POI2011】Meteors [整体二分]
Meteors Time Limit: 60 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 这个星球经常会下陨石雨.BI ...
- mysqli_insert_id
mysqli_insert_id($mysqli),这个函数一开始我用的时候老是返回0,疯掉了,百度了n次,问了n个人,搞了几天,就是解决不了,最后我把他换成面对对象编程,终于成功了,开心,也许这就是 ...
- javascript的阻塞机制
javascript的阻塞机制 浏览器在执行javascript代码时,不能同时做其它事情,当遇到javascript时,浏览器会下载js文件,解析并执行该文件,而在这期间页面的渲染是完全被阻塞的,因 ...