#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 ...
随机推荐
- sencha touch 在线实战培训 第一期 第八节 (完结)
2014.1.15晚上8点开的课 这是本期课程的最后一课,下期课程预计在春节后继续. 如果你有什么意见和建议可以将他们发送到邮箱:534502520@qq.com 本期培训一共八节,前三堂免费,后面的 ...
- [Offer收割]编程练习赛13 B.最大子矩阵[枚举]
#1502 : 最大子矩阵 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个NxM的矩阵A和一个整数K,小Hi希望你能求出其中最大(元素数目最多)的子矩阵,并且该 ...
- DragonBones龙骨插槽的隐藏
参考: 插槽中对象的显示与隐藏问题 let factory = dragonBones.EgretFactory.factory; factory.parseDragonBonesData(RES.g ...
- javaAgent 参数
-javaagent 这个JVM参数是JDK 5引进的. Java -help的帮助里面写道: -javaagent:<jarpath>[=<options>] load Ja ...
- Unity3D笔记 愤怒的小鸟<五> 小鸟动画+Unity3D如何设置断点调式
前言:实现小鸟的动画,之前吐槽过js写U3D,就改成了C#来写,没想到遇到问题了. 实现的效果 using UnityEngine; using System.Collections; /// < ...
- github中删除一个repository
(1) 首先进入相应的repository,然后点击setting 2,点击 delete the repository (3) 输入要删除的repository名字,即可删除
- python操作数据库PostgreSQL
1.简述 python可以操作多种数据库,诸如SQLite.MySql.PostgreSQL等,这里不对所有的数据库操作方法进行赘述,只针对目前项目中用到的PostgreSQL做一下简单介绍,主要包括 ...
- Python 重定向获取真实url
通常的返回url: http_headers = { 'Accept': '*/*','Connection': 'keep-alive', 'User-Agent': 'Mozilla/5.0 (W ...
- SequenceFile实例操作
HDFS API提供了一种二进制文件支持,直接将<key,value>对序列化到文件中,该文件格式是不能直接查看的,可以通过hadoop dfs -text命令查看,后面跟上Sequen ...
- 为VS定制一个自己的代码生成器 - 自定义工具开发
自定义工具开发 为VS定制一个自己的代码生成器 如何在Visual Studio中开发自己的代码生成器插件 你必须懂的 T4 模板:深入浅出 Regasm组件注册工具使用方法 Regasm 注册C# ...