数据排序 第三讲( 各种排序方法 结合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来进 ...
随机推荐
- react router路由传参
今天,我们要讨论的是react router中Link传值的三种表现形式.分别为通过通配符传参.query传参和state传参. ps:进入正题前,先说明一下,以下的所有内容都是在react-rout ...
- requestAnimationFrame实现一帧的函数节流
用一个变量判断raf的回调是否已经执行了,已经执行了说明过了一帧,通常是16.7ms,达到了函数节流一帧的目的. var locked = false; window.addEventListense ...
- 【COGS 1873】 [国家集训队2011]happiness(吴确) 最小割
这是一种最小割模型,就是对称三角,中间双向边,我们必须满足其最小割就是满足题目条件的互斥关系的最小舍弃,在这道题里面我们S表示文T表示理,中间一排点是每个人,每个人向两边连其选文或者选理的价值,中间每 ...
- Saruman’s Level Up~(多校赛算组合数)
Description Saruman’s army of orcs and other dark minions continuously mine and harvest lumber out o ...
- mysql的中文乱码问题
当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12',' ...
- 构建一个类jq的函数库
jqfree core var $ = function(selector, context) { return new $.fn.init(selector, context); }; $.fn = ...
- es6+最佳入门实践(8)
8.Promise 8.1.什么是异步? 要理解异步,首先,从同步代码开始说 alert(1) alert(2) 像上面的代码,执行顺序是从上到下,先后弹出1和2,这种代码叫做同步代码 alert(0 ...
- Lesson 3
1.关于面向对象的三个重要属性 Encapsulation(封装):无法直接访问类的成员变量,而是通过一些get set方法,间接访问数据域: Polymorphism(多态):静态绑定,动态绑定, ...
- Chrome 本地通信
http://blog.csdn.net/ztmaster/article/details/52684772
- 游戏中的过程生成——元胞自动机 Celluar Automata 生成洞穴地形
最近在学习过程生成技术,在这里写一些心得. 对于元胞自动机,我们这里只讨论输入是一副二维bool数组的情况,即大多数游戏中的情况. 一个元胞自动机,对于一个输入,给出一个同样格式的输出.输出中的每个点 ...