数据排序 第一讲( 各种排序方法 结合noi题库1.10)
选择排序
1.基本思想:每一趟从待排序的数据元素选出最小或最大的一个元素,数按序排放在待排序的元素的最前端,直到全部待排序的元素排完
2.基本代码
px(int r[])
{
;i<n;i++)
{
int k=i;
;j<=n;j++)
{
if(a[k]>a[j]
K=J;
}
if(k!=i)
{
int tmp=a[i];
a[i]=a[k];
a[k]=a[i];
}
}
}
3.例题
谁考了第k名
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩。
- 输入
- 第一行有两个整数,分别是学生的人数n(1≤n≤100),和求第k名学生的k(1≤k≤n)。
其后有n行数据,每行包括一个学号(整数)和一个成绩(浮点数),中间用一个空格分隔。 - 输出
- 输出第k名学生的学号和成绩,中间用空格分隔。(注:请用%g输出成绩)
- 样例输入
-
5 3 90788001 67.8 90788002 90.3 90788003 61 90788004 68.4 90788005 73.9
- 样例输出
-
90788004 68.4
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; ]; ]; int main() { scanf("%d%d",&n,&k); ;i<=n;i++) { cin>>a[i]; cin>>b[i]; } ;i<n;i++) { ;j<=n;j++) { if(b[i]<b[j]) { float tmp=b[i]; b[i]=b[j]; b[j]=tmp; int amp=a[i]; a[i]=a[j]; a[j]=amp; } } } ;i<=n;i++) { if(i==k) { cout<<a[i]<<" "; printf("%.6g",b[i]); } } ; }冒泡排序
1.基本思想:依次比较相邻的两个数,把大的放前面小的放后面。即先比较第一个和第二个,在比较第二个和第三个。。。。。。直到比较完最后两个数,则最小的数一定在最后面
2.核心代码
;i<n;i++) ;j<=n-i;j++) { int tmp=a[j]; a[j]=a[j+]; a[j+]=tmp; }3.例题
02:奇数单增序列
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出。
- 输入
- 共2行:
第1行为 N;
第2行为 N 个正整数,其间用空格间隔。 - 输出
- 增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。
- 样例输入
-
10 1 3 2 6 5 4 9 8 7 10
- 样例输出
-
1,3,5,7,9
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n,l; ],b[]; int main() { scanf("%d",&n); ;i<=n;i++) { scanf("%d",&a[i]); !=) { l++; b[l]=a[i]; } } ;i<l;i++) ;j<=l-i;j++) ]) { int tmp=b[j]; b[j]=b[j+]; b[j+]=tmp; } ;i<l;i++) printf("%d,",b[i]); printf("%d",b[l]); ; }结构体排序
有同学会说,不就是给结构体排序吗,这个简单,那在这就不都说了
例题
03:成绩排序
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
- 输入
- 第一行为n (0 < n < 20),表示班里的学生数目;
接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。 - 输出
- 把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。
- 样例输入
-
4 Kitty 80 Hanmeimei 90 Joey 92 Tim 28
- 样例输出
-
Joey 92 Hanmeimei 90 Kitty 80 Tim 28
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n; struct student { int score; string name; }a[]; int score_comp(const student &a,const student &b) { ; ; ; ; } int main() { scanf("%d",&n); ;i<=n;i++) { cin>>a[i].name; cin>>a[i].score; } sort(a+,a+n+,score_comp); ;i<=n;i++) { cout<<a[i].name<<' '; cout<<a[i].score<<endl; } ; }桶排序
1.基本思想
若带排序的记录的关键词在一个明显的有限范围内(整形)时,可以设计有限个有序桶,每个桶装入一个值(当然可以装入若干个值)
顺序输出各桶的值,将得到一个有序数列。
2.模板
例题:输入n个0到100之间的整数,从小到大排序
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n,k; ]; int main() { scanf("%d",&n); ;i<=n;i++) { scanf("%d",&k); b[k]++; } ;i<=;i++) ) { printf("%d ",i); b[i]--; } ; }3.例题
题目描述 Description给出n和n个整数,希望你从小到大给他们排序
输入描述 Input Description第一行一个正整数n
第二行n个用空格隔开的整数
输出描述 Output Description输出仅一行,从小到大输出n个用空格隔开的整数
样例输入 Sample Input3
3 1 2
样例输出 Sample Output1 2 3
数据范围及提示 Data Size & Hint1<=n<=100000
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n,k; ]; int main() { scanf("%d",&n); ;i<=n;i++) { scanf("%d",&k); b[k]++; } ;i<=;i++) ) { printf("%d ",i); b[i]--; } ; }
数据排序 第一讲( 各种排序方法 结合noi题库1.10)的更多相关文章
- 数据排序 第二讲( 各种排序方法 结合noi题库1.10)
先来个题练练手吧! 例题 04:奖学金 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生 ...
- 数据排序 第三讲( 各种排序方法 结合noi题库1.10)
说了那么多种排序方法了,下面就来先做几个题吧 06:整数奇偶排序 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 给定10个整数的序列,要求对其重新排序.排序 ...
- 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, ...
- MapReduce:将下面的两排数字先按第一排排序,然后再按第二排排序,要求顺序排序
MapReduce:将下面的两排数字先按第一排排序,然后再按第二排排序,要求顺序排序 文件如下: 这个案例主要考察我们对排序的理解,我们可以这样做: 代码如下(由于水平有限,不保证完全正确,如果发现错 ...
- 排序图解:js排序算法实现
之前写过js实现数组去重, 今天继续研究数组: 排序算法实现. 排序是数据结构主要内容,并不限于语言主要在于思想:大学曾经用C语言研究过一段时间的排序实现, 这段时间有空用JS再将排序知识点熟悉一遍. ...
- C++ STL中Map的按Key排序和按Value排序
map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区 分),我们用map来进 ...
随机推荐
- 【2017.12.22.A】
A 题面: 给一个n个点m条边的无向图,你可以选择一个点作为起点,然后沿着图中的边开始走,走的过程中,同一条边不能经过两次(相反的方向也不行). ...
- 【BZOJ 3144】 [Hnoi2013]切糕 真·最小割
一开始一脸懵逼后来发现,他不就是割吗,我们只要满足条件就割就行了,于是我们把他连了P*Q*R条边,然而我们要怎样限制D呢?我们只要满足对于任意相邻的两条路,只要其有个口大于D就不行就好了因此我们只要把 ...
- CSS中background-position使用技巧
一.background-position:left top; 背景图片的左上角和容器(container)的左上角对齐,超出的部分隐藏.等同于 background-position:0,0;也等同 ...
- [Python]安装完pip、pygame后,仍然import pygame报错
按照<python编程从入门到实践>上的教程下载了pygame的whl文件进行安装, 在cmd窗口里import pygame提示无错误,在IDEL里程序也能正常运行, 但是pycharm ...
- Liberty中应用的contextroot
参考:http://www-01.ibm.com/support/knowledgecenter/api/content/SSEQTP_8.5.5/com.ibm.websphere.wlp.doc/ ...
- 河南省第十届省赛 Plumbing the depth of lake (模拟)
title: Plumbing the depth of lake 河南省第十届省赛 题目描述: There is a mysterious lake in the north of Tibet. A ...
- bzoj 3190 维护栈
我们可以将每一辆赛车看成一条直线,斜率为速度,纵截距为初始位置,那么问题就转化为求这n条直线处于最上面的直线.最上面是指在坐标系中,假设从x轴向下看,能看到的直线,只露一个点也算能看见.那么就类似水平 ...
- bzoj 1005 组合数学 Purfer Sequence
这题需要了解一种数列: Purfer Sequence 我们知道,一棵树可以用括号序列来表示,但是,一棵顶点标号(1~n)的树,还可以用一个叫做 Purfer Sequence 的数列表示 一个含有 ...
- hdu 2141 Can you find it?(二分查找)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2141 题目大意:查找是否又满足条件的x值. 这里简单介绍一个小算法,二分查找. /* x^2+6*x- ...
- 常见的makefile写法【转】
转自:http://blog.csdn.net/ghostyu/article/details/7755177 版权声明:本文为博主原创文章,未经博主允许不得转载. .目标名称,摆脱手动设置目标名称 ...