稳定排序就是相同元素排序后次序不会发生改变的排序方法.

冒泡是稳定排序.

快一点的归并也是稳定排序.

               稳定排序

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2766    Accepted Submission(s): 1081

Problem Description
大家都知道,快速排序是不稳定的排序方法。
如果对于数组中出现的任意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行,是上述列表经过某排序算法以后生成的一个序列。格式同上。
Output
对于每组数据,如果算法是正确并且稳定的,就在一行里面输出"Right"。如果算法是正确的但不是稳定的,就在一行里面输出"Not Stable",并且在下面输出正确稳定排序的列表,格式同输入。如果该算法是错误的,就在一行里面输出"Error",并且在下面输出正确稳定排序的列表,格式同输入。

注意,本题目不考虑该排序算法是错误的,但结果是正确的这样的意外情况。

Sample Input
3 aa 10 bb 10 cc 20 cc 20 bb 10 aa 10 3 aa 10 bb 10 cc 20 cc 20 aa 10 bb 10 3 aa 10 bb 10 cc 20 aa 10 bb 10 cc 20
Sample Output
Not Stable cc 20 aa 10 bb 10 Right Error cc 20 aa 10 bb 10
Author
linle
Source
2008浙大研究生复试热身赛(2)——全真模拟
Recommend
lcy
#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
using namespace std;struct node
{char str[100];int key;
};node g[300],g1[300];int main()
{int  n;while(scanf("%d",&n)!=EOF){for(int i=0;i<n;i++){scanf("%s %d",g[i].str,&g[i].key);}for(int i=0;i<n;i++)scanf("%s %d",g1[i].str,&g1[i].key);for(int i=0;i<n;i++)for(int j=i;j>0;j--){if(g[j].key>g[j-1].key) {char tmp[100];strcpy(tmp,g[j-1].str);strcpy(g[j-1].str,g[j].str);strcpy(g[j].str,tmp);int tt;tt=g[j].key;g[j].key=g[j-1].key;g[j-1].key=tt;}}int flag=0;for(int i=0;i<n;i++){if(g1[i].key!=g[i].key){flag=1;break;}}if(flag==1){printf("Error\n");for(int i=0;i<n;i++)printf("%s %d\n",g[i].str,g[i].key);continue;}for(int i=0;i<n;i++){if(strcmp(g1[i].str,g[i].str)!=0){flag=1;break;}}if(flag==1){printf("Not Stable\n");for(int i=0;i<n;i++)printf("%s %d\n",g[i].str,g[i].key);continue;}printf("Right\n");}return 0;
}

 

hdu 1872(稳定排序)相关推荐

  1. hdu 1872 稳定排序

    这个题我弄了一下午,刚开始测试的结果是和例子一样,但是就是错误答案.看了下网上的答案才知道自己错在哪了: 它首先是按成绩排名的当成绩一样是就要原先的先后顺序排的.刚开始我一直以为都是按名字排的.哎.. ...

  2. 杭电Problem 1872 稳定排序

    稳定排序 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  3. 杭电1872稳定排序

    稳定排序 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  4. 稳定排序与不稳定排序的定义

    如果队列中存在两个相等的数字排序过程中 这两个数字的先后顺序如果不会发生变化 就叫做稳定的排序反之叫做不稳定 参考文章:稳定排序和不稳定排序.

  5. python numpy np.lexsort()(使用键序列执行间接稳定排序)(具体没太搞懂区别?)

    from numpy\core_multiarray_umath.py @array_function_from_c_func_and_dispatcher(_multiarray_umath.lex ...

  6. boost::sort模块实现测试并行稳定排序

    boost::sort模块实现测试并行稳定排序 实现功能 C++实现代码 实现功能 boost::sort模块实现测试并行稳定排序 C++实现代码 #include <ciso646> # ...

  7. HDU--1872 稳定排序

    大家都知道,快速排序是不稳定的排序方法.  如果对于数组中出现的任意aii,ajj(i<j),其中aii==ajj,在进行排序以后aii一定出现在ajj之前,则认为该排序是稳定的. 某高校招生办 ...

  8. HDU 4857 拓扑排序 优先队列

    n个数,已经有大小关系,现给m个约束,规定a在b之前,剩下的数要尽可能往前移.输出序列 大小关系显然使用拓扑结构,关键在于n个数本身就有大小关系,那么考虑反向建图,优先选择值最大的入度为零的点,这样得 ...

  9. 面趣 | 为什么要分稳定排序和非稳定排序?

    作者 channingbreeze 如需转载,请联系原作者. 小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 今天他去了一家互联网小巨头 ...

最新文章

  1. python发送文件到邮箱_python发送文件夹内容到邮箱
  2. c语言读取一个图像文件格式,求指导,如何用c语言实现读取*.raw格式图像
  3. .NET应用迁移到.NET Core(三)从商业角度看移植过程
  4. 服务器多网站布置,如何在一台服务器上实现多个web站点的方法
  5. Combobox绑定数据源DataSet
  6. 字典排序 python3_这10个字典操作你必须知道
  7. HTML5与触摸界面
  8. php格式转换rar,如何在PHP中创建压缩的RAR文件?
  9. XSS跨站之原理分类及攻击手法
  10. 比较好的自媒体平台推荐,揭秘哪个自媒体平台收入最高
  11. 欢乐颂 c语言编程代码,欢乐颂
  12. 触发onblur事件alert死循环问题
  13. QQ-360大战影响恶劣
  14. Android 10.0在电话拨号盘(Dialer app中)通过暗码进入工厂测试模式
  15. 健身房训练计划—背部
  16. Vue-GoogleMap (一)实时定位
  17. 专题一:Labview表格控件 及 应用(二)
  18. [附源码]Python计算机毕业设计SSM基于框架的报修系统(程序+LW)
  19. 使用百度在网络上搜索资料 在计算机,利用百度搜索资料认识计算机.doc
  20. 『XXG探索』canvas 获取图片主体颜色

热门文章

  1. POJ1548最小路径覆盖
  2. 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexPathList 构造函数分析 | makeDexElements 函数分析 )
  3. 【Java 虚拟机原理】Dalvik 虚拟机 ( 打包 Jar 文件和 Dex 文件 | 反编译 Dex 文件 | 分析 Dex 文件反编译结果 )
  4. 【Android RTMP】音频数据采集编码 ( 音频数据采集编码 | AAC 高级音频编码 | FAAC 编码器 | Ubuntu 交叉编译 FAAC 编码器 )
  5. HTTP状态码--含义
  6. Java截取最后一个/后面的所有字符
  7. android闹钟(五):实现闹钟功能
  8. Codeforces Gym 100676G Training Camp 状压dp
  9. poj 1379 模拟退火法
  10. Hadoop–Task 相关