杭电1872 稳定排序
来源:互联网 发布:淘宝字画 编辑:程序博客网 时间:2024/06/05 09:37
稳定排序
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 61 Accepted Submission(s) : 21
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
大家都知道,快速排序是不稳定的排序方法。
如果对于数组中出现的任意a[i],a[j](i<j),其中a[i]==a[j],在进行排序以后a[i]一定出现在a[j]之前,则认为该排序是稳定的。
某高校招生办得到一份成绩列表,上面记录了考生名字和考生成绩。并且对其使用了某排序算法按成绩进行递减排序。现在请你判断一下该排序算法是否正确,如果正确的话,则判断该排序算法是否为稳定的。
如果对于数组中出现的任意a[i],a[j](i<j),其中a[i]==a[j],在进行排序以后a[i]一定出现在a[j]之前,则认为该排序是稳定的。
某高校招生办得到一份成绩列表,上面记录了考生名字和考生成绩。并且对其使用了某排序算法按成绩进行递减排序。现在请你判断一下该排序算法是否正确,如果正确的话,则判断该排序算法是否为稳定的。
Input
本题目包含多组输入,请处理到文件结束。
对于每组数据,第一行有一个正整数N(0<N<300),代表成绩列表中的考生数目。
接下来有N行,每一行有一个字符串代表考生名字(长度不超过50,仅包含'a'~'z'),和一个整数代表考生分数(小于500)。其中名字和成绩用一个空格隔开。
再接下来又有N行,是上述列表经过某排序算法以后生成的一个序列。格式同上。
对于每组数据,第一行有一个正整数N(0<N<300),代表成绩列表中的考生数目。
接下来有N行,每一行有一个字符串代表考生名字(长度不超过50,仅包含'a'~'z'),和一个整数代表考生分数(小于500)。其中名字和成绩用一个空格隔开。
再接下来又有N行,是上述列表经过某排序算法以后生成的一个序列。格式同上。
Output
对于每组数据,如果算法是正确并且稳定的,就在一行里面输出"Right"。如果算法是正确的但不是稳定的,就在一行里面输出"Not Stable",并且在下面输出正确稳定排序的列表,格式同输入。如果该算法是错误的,就在一行里面输出"Error",并且在下面输出正确稳定排序的列表,格式同输入。
注意,本题目不考虑该排序算法是错误的,但结果是正确的这样的意外情况。
注意,本题目不考虑该排序算法是错误的,但结果是正确的这样的意外情况。
Sample Input
3aa 10bb 10cc 20cc 20bb 10aa 103aa 10bb 10cc 20cc 20aa 10bb 103aa 10bb 10cc 20aa 10bb 10cc 20
Sample Output
Not Stablecc 20aa 10bb 10RightErrorcc 20aa 10bb 10
这道题我是用的冒泡排序,冒泡排序虽然时间复杂度相对比较高,但是相对于快排来说很稳定,它是一种稳定排序,适合不会用stable_sort排序的人
参考代码:
#include<stdio.h>#include<string.h>#define max 1000struct information{ char name[60]; int score; int num;};//首先用结构体来存储int main(){ struct information s1[max]; struct information s2[max]; int i = 0, t = 0 , j = 0 , n = 0 ; struct information temp; while(~scanf("%d",&n)) { for(i = 0 ; i < n ; i++) { scanf("%s%d",s1[i].name,&s1[i].score); s1[i].num = i ; }
for( i = 0 ; i < n ; i++) { scanf("%s%d",s2[i].name,&s2[i].score); }
//这里使用的是冒泡排序 for(i = 0 ; i < n-1 ; i++) { for(j = 0 ; j < n-1-i ; j++) { if(s1[j].score < s1[j+1].score) { temp=s1[j+1] ; s1[j+1] = s1[j]; s1[j] = temp; } } } int flag1 = 1 ; int flag2 = 1 ; for(i = 0 ;i < n ; i++) { if(s1[i].score != s2[i].score) { flag1 = 0 ; } if(strcmp(s1[i].name,s2[i].name) != 0) flag2 = 0 ; } if(!flag1) { printf("Error\n"); for(i = 0 ; i < n ; i++) { printf("%s %d\n",s1[i].name,s1[i].score); } } else if(!flag2) { printf("Not Stable\n"); for( i = 0 ; i < n ; i++) { printf("%s %d\n",s1[i].name,s1[i].score); } } else if(flag1&&flag2) printf("Right\n"); } return 0; }
0 0
- 杭电1872 稳定排序
- 杭电1872 稳定排序
- 杭电1872稳定排序
- 杭电1872稳定排序
- 【杭电】[1872]稳定排序
- 【杭电1872】稳定排序
- 杭电Problem 1872 稳定排序
- 【杭电oj】1872 - 稳定排序(结构体排序)
- 【杭电-oj】-1872-稳定排序(sort,结构体)
- 杭电-1872 稳定排序(sort+结构体)
- hdu 1872 稳定排序
- hdu 1872 稳定排序
- HDU 1872 稳定排序
- hdu 1872 稳定排序
- hdu 1872 稳定排序
- HDOJ 1872 稳定排序
- HDU 1872 稳定排序
- hdu-1872 稳定排序
- 黑马程序员_java静态代码块、构造代码块和构造函数的执行时间分析
- cdc
- HTML_01 常用基本标签
- setup.py vs requirements.txt
- iOS 为导航栏自定义按钮图案Button Image 运行出来的颜色与原本颜色不一样 -解决方案
- 杭电1872 稳定排序
- MFC图像处理软件 地图 不显示图片对话框
- 学习:Log中'main', 'system', 'radio', 'events'
- 【转】ibatis动态sql
- [leetcode] Single Number
- 黑马程序员_java子类构造函数的执行过程
- springMVC与flex 整合
- Jenkins + Android/WinRT 运行单元测试
- ASP.NET中主题的创建和应用