一、sort和stable_sort的区别:

c++中的stable_sort排序函数与sort功能差不多,排序所使用的思路不一样。

1、sort(a,a+N) ,其中a是数组,a+N表示对a[0]至a[N-1]的N个数进行排序(默认从小到大排序);sort(a,a+N,cmp),第三个参数是一个函数。使用的是快速排序的思路,虽然速度快,但是有不稳定(什么叫不稳定,有两个相同的数A和B,在排序之前A在B的前面,而经过排序之后,B跑到了A的前面,对于这种情况的发生,我们管他叫做排序的不稳定性,自己想一下快速排序的思路就知道为啥不稳定了)。

2、而stable_sort用的是归并排序的思路,刚好解决了sort排序这个缺点。下面为使用stable_sort函数排序的例子(也是考研上机题)

二、题目

题目描述

输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。

输入描述:

输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开

输出描述:

按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

使用stable_sort函数排序代码如下:

#include<bits/stdc++.h>
using namespace std;
string name [500];
int s[500];
int n,flag;
int r[500];
int cmp1(int i,int j){//从高到低 return s[i]<s[j];
}
int cmp2(int i,int j){//从低到高 return s[i]>s[j];
}
int main(){while(scanf("%d%d",&n,&flag)!=EOF){int i;for(i=0;i<n;i++){r[i]=i;cin>>name[i]>>s[i];}if(flag==1){stable_sort(r,r+n,cmp1);}else{stable_sort(r,r+n,cmp2);}for(i=0;i<n;i++){cout<<name[r[i]]<<' '<<s[r[i]]<<endl;}} return 0;
}

本题除了这个思路,还可以使用结构体把名字和成绩联系在一起,这样排序也比较好排。我还试过了一个最笨的办法去解决这个问题,也ac了,没有超时。

关于排序的算法,以前大一acm的时候,完全不在话下,2年过去了,现在都不熟悉,开始搞这个题目的时候,比较模糊了。推一个排序算法总结比较好的文章https://www.cnblogs.com/onepixel/articles/7674659.html

stable_sort的用法与排序算法相关推荐

  1. php自然排序法的比较过程,PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)...

    本文实例讲述了PHP中strnatcmp()函数"自然排序算法"进行字符串比较用法.分享给大家供大家参考,具体如下: PHP中strnatcmp()函数使用"自然&quo ...

  2. C++11时代的标准库快餐教程(4) - 排序算法的应用

    排序算法的应用 用排序做集合运算 - 子集,交集,并集与差集 上一节我们讲了排序算法,包括快速排序sort,堆排序partial_sort和归并排序stable_sort.并且讲了排序的第一个用法,二 ...

  3. 常用排序算法的C++实现

    排序是将一组"无序"的记录序列调整为"有序"的记录序列. 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在 ...

  4. 漫画:三种 “奇葩” 的排序算法

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 在算法的世界里,有许多高效率的排序算法,比如快速排序.归并排序.桶 ...

  5. javascript写各种排序算法

    在知乎上看到这个题目,就自己写了一下,在这里附上链接,里面有各种排序的动态图,非常形象直观,有助于新手对排序算法理解,链接:常见排序算法之JavaScript实现 首先各种排序算法都会用到的交换函数: ...

  6. java实现apriori算法_七大经典、常用排序算法的原理、Java 实现以及算法分析

    0. 前言 大家好,我是多选参数的程序员,一个正再 neng 操作系统.学数据结构和算法以及 Java 的硬核菜鸡.数据结构和算法是我准备新开的坑,主要是因为自己再这块确实很弱,需要大补(残废了一般) ...

  7. python常用算法有哪些_python常见的排序算法有哪些?

    大家都知道,关于python的算法有很多,其中最为复杂的就是python的排序算法,因为它并不是单一的,而是复杂的,关于排序算法就有好几种不同的方式,大家可以根据以下内容,结合自己的项目需求,选择一个 ...

  8. 排序算法--(冒泡排序,插入排序,选择排序,归并排序,快速排序,桶排序,计数排序,基数排序)

    一.时间复杂度分析 - **时间复杂度**:对排序数据的总的操作次数.反应当n变化时,操作次数呈现什么规律 - **空间复杂度**:算法在计算机内执行时所需要的存储空间的容量,它也是数据规模n的函数. ...

  9. 万字详解|手撕 9大排序算法!

    0. 前言 大家好,我是多选参数的程序锅,一个正在捣鼓操作系统.学数据结构和算法以及 Java 的失业人员.数据结构和算法我已经学了有一段日子了,最近也开始在刷 LeetCode 上面的题目了,但是自 ...

最新文章

  1. 元学习—Meta Learning的兴起
  2. 测量场效应晶体管(JFET) 2N3819
  3. 常考数据结构与算法: NC19 连续子数组的最大和
  4. PAT甲级1049 Counting Ones (30 分):[C++题解]统计1的个数、数位统计
  5. EditThisCookie插件的使用方法
  6. mysql删除赋权_mysql 添加用户 删除用户 赋权
  7. PPT模板(淘宝花钱买来的,免费分享给大家)
  8. Python 中argparse模块的使用
  9. python安装you—get_使用Python下载工具you-get下载媒体文件
  10. excel 2016 新建时 出现 内存或磁盘不足错误的解决方法
  11. python解压.tar.gz
  12. 3dplanesoft 30全套注册码
  13. CentOS 开机优化程序
  14. Microsoft PowerPoint无法执行语言识别
  15. 树莓派+USB免驱摄像头远程监控
  16. 2020-12-09
  17. html怎样修改背景图片大小,css中如何设置背景图片的大小?
  18. uni-app学习笔记(1):模板语法
  19. 前端编程中,如何消除浏览器缓存
  20. 数据库设计-逻辑设计

热门文章

  1. 大数据ui设计师_为什么设计师应该使用真实数据
  2. [Kaggle]图片去噪题解阅读笔记
  3. 微软旗下GitHub宣布裁员10%;谷歌高管警告:AI聊天机器人会产生错觉;华为称在ChatGPT领域早有布局丨每日大事件...
  4. 京东登月平台基础架构技术解析
  5. geber文件各层英文缩写对应关系
  6. 今天生日,教大家设计移动互联网产品
  7. 计算机二级C语言中isdigit,C使用带字符串的标准算法,带有isdigit的count_if,函数转换...
  8. 2-3 打折促销* (10 分)
  9. [译] 为数字优先新闻编辑室开发文本编辑器
  10. 史上最简单-在 windows+python3.6 环境下创建自己的YOLOv3 [ VOC2007 ] 数据集