#C++初学记录(sort函数)
sort函数
前言:当进行贪心算法的学习时,需要用到sort函数,因为初学c++汇编语言,sort的具体用法没有深入学习,所以这里进行sort学习记录并只有基础用法并借用贪心算法题目的代码。
百度百科:用于C++中,对给定区间所有元素进行排序。头文件是#include algorithm。
编译代码
#include<iostream>
#include<algorithm>
using namespace std;
#define MAXN 100
struct node{
int start;
int end;
}record[MAXN];
//结构体排序
bool cmp(const node& a,const node& b)
{
return a.end < b.end;
}
int main()
{
int n, count, lastend, i;
while(true){
//读入n
cin>>n;
//判定结束条件
if(n == 0)
break;
//读入原始数据
for(i=0; i<n; i++)
cin >> record[i].start >> record[i].end;
//排序:按结束时间
sort(record, record + n, cmp);
//贪心法处理:后一个起始时间必须大于或等于前一个终止时间
count = 0;
lastend = -1;
for(i=0; i<n; i++){
if(record[i].start >= lastend) {
count++;
lastend = record[i].end;
}
}
cout<<count<<endl;
}
return 0;
}
函数理解
sort函数是c++中非常实用的函数,我们不再需要使用冒泡排序等排序方法对数据进行排序,使用sort函数即可对所选定的数据进行你需要的排序方法,排序规则可以自己编写。sort函数需要键入三个参数,第一个和第二个参数是需要排序的数据起始和结束端,第三个参数是需要自己自行定义的排序规则,即告诉函数它应该怎么进行排序,若第三个参数不进行编写,则默认由小到大进行排序。
bool cmp(const node& a,const node& b)
{
return a.end < b.end;
}
sort(record, record + n, cmp);
参数cmp就由自己定义成对a结构体的end组数组进行由小到大的排序。
#C++初学记录(sort函数)的更多相关文章
- STL sort 函数实现详解
作者:fengcc 原创作品 转载请注明出处 前几天阿里电话一面,被问到STL中sort函数的实现.以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不 ...
- STL sort()函数
C++之所以得到这么多人的喜欢,是因为它既具有面向对象的概念,又保持了C语言高效的特点.STL 排序算法同样需要保持高效.因此,对于不同的需求,STL提供的不同的函数,不同的函数,实现的算法又不尽相同 ...
- 1016. Phone Bills (25) -vector排序(sort函数)
题目如下: A long-distance telephone company charges its customers by the following rules: Making a long- ...
- <algorithm>里的sort函数对结构体排序
题目描述 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签到.签离记录,请根据记录找出当天开门和关门的人. 输入描述: 每天的记录在第一行给出记录的条目数M (M &g ...
- STL sort 函数实现详解 ZZ
前几天阿里电话一面,被问到STL中sort函数的实现.以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不对劲,知道自己回答错了.这几天特意看了一下,在 ...
- js中各个排序算法和sort函数的比较
js中要实现数据排序,其实只需要用sort函数就能很好的满足了,但是我今天想知道他和其他排序算法的区别,比如耗时呀等.测了一组数据如下: // ---------- 一些排序算法 Sort = {} ...
- sort函数_C++
C++的STL库里有一个 sort 函数,它就是随机化快速排序,速度比快速排序还快,因为它克服了逆序时被卡成O(n2)的情况 想要使用 sort 首先要在头文件里申明 #include<algo ...
- sort函数居然能改变元素值?记一次有趣的Bug——四数之和
坐标leetcode: 我想都不想直接深度优先搜索暴力求解: class Solution { public: vector<vector<int>> res; //答案 in ...
- System中记录体函数命名怪异
//1019unit System; 中发现记录体函数命名怪异//乍一看,很怪异,其实是结构体里面 的变量后面直接写 函数类型了.不像传统先定义T***Event = procedure(S ...
随机推荐
- php应用
1. php判断是否为数字 is_numeric() 这个函数就是检测参数是否为数字,如果是就返回true,如果不是就返回false is_numeric( 'abcd123' ) or die('提 ...
- [SharePoint 2010] SharePoint 2010 FBA 配置以及自定义首页
https://blogs.msdn.microsoft.com/kaevans/2010/07/09/sql-server-provider-for-claims-based-authenticat ...
- css---媒体查询
简单示例: <style type="text/css"> /* 小于 300的时候 */ @media screen and (max-width: 400px){ ...
- openstack 部署(Q版)-----glance镜像服务安装配置
一.创建数据库 CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO '; GRANT ALL PRIVILEGES ON glanc ...
- EasyUI常用控件禁用方法
EasyUI常用控件禁用方法: 1.validatebox可以用的用法:前两种适用于单个的validatebox; 第三种应用于整个form里面的输入框; <1>.$("#id& ...
- 计蒜客 31460 - Ryuji doesn't want to study - [线段树][2018ICPC徐州网络预赛H题]
题目链接:https://nanti.jisuanke.com/t/31460 Ryuji is not a good student, and he doesn't want to study. B ...
- python 将字符串转换为字典
在一般的工程处理中,需要将获取的字符串数据转换为字典,这样处理起来会非常方便. 我获取的是json数据: content = {"corpus_no":"64702772 ...
- MySQL在windows下的noinstall安装
1.解压mysql zip软件包 2.配置环境变量 3.修改配置文件my_default.ini添加如下: [mysqld] basedir=D:\MySQL\MySQL Server 5.6(mys ...
- Minimalist GNU for Windows
MinGW | Minimalist GNU for Windows http://www.mingw.org/ MinGW, a contraction of "Minimalist GN ...
- ES6 ruanyifeng, shim polyfill
http://www.cnblogs.com/upup2015/p/7927485.html 一个等号是赋值操作,==先转换类型再比较,===先判断类型,如果不是同一类型直接为false npm in ...