第10章排序及相关操作案例.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章 排序及相关操作 ;主要函数如下所示。;6;10.1 排序;③partial_sort 原型:templateclass RanIt void partial_sort(RanIt first, RanIt middle, RanIt last); templateclass RanIt, class Pred void partial_sort(RanIt first, RanIt middle, RanIt last, Pred pr); 该函数实现了局部元素排序功能。对[first, last)间的元素排序结束后,仅前middle-first-1个元素是必须按要求排好序的,其它元素不一定是排好序的。即:对任意N[0,middle-first],M(N,last-first),都有*(first+N)*(first+M)。第二个函数与第一个函数相比定义了比较函数pr(x,y)代替了operator, 功能是相似的。 ④partial_sort_copy 原型:templateclass InIt, class RanIt RanIt partial_sort_copy(InIt first1, InIt last1,RanIt first2, RanIt last2); templateclass InIt, class RanIt, class Pred RanIt partial_sort_copy(InIt first1, InIt last1,RanIt first2, RanIt last2, Pred pr); 该函数功能是: 与partial_sort相比有两点主要不同:(1)排序结果可以输出到另外一个容器(当然也可自身容器);(2)partial_sort函数中直接给出了middle值,而该函数middle值是计算出来的。middle=min(last1-first1,last2-first2)+first1。之后:对任意N[0,middle-first1],M(N,last1-first1),都有*(first2+N)*(first1+M)。第二个函数与第一个函数相比定义了比较函数pr(x,y)代替了operator, 功能是相似的。;10.1.2 示例分析;【例10.2】对学生成绩进行升序排列;【例10.3】利用partial_sort取整形向量最小的4个元素。;【例10.4】求成绩最好的3位同学。;【例10.5】list容器排序问题。;注释行的程序是错误的,说明list容器不能用sort通用排序算法。这是由于sort需要的是随机迭代器,方便排序算法中的数据交换,而list提供的仅是双向迭代器。因此要想排序,只能用list类本身提供的sort函数,它有两种形式,已经在第6章6.3节list容器中简单讲过。如果要想让示例中元素降幂排列,如下调用就可以了:l.sort(greaterint())。当然也可以定义自定义二元函数。;10.2 第n个元素;10.2.2 示例分析 【例10.6】求第3个成绩最好的学生;10.3 二分检索;③equal_range 原型: templateclass FwdIt, class T pairFwdIt, FwdIt equal_range(FwdIt first, FwdIt last,const T val); templateclass FwdIt, class T, class Pred pairFwdIt, FwdIt equal_range(FwdIt first, FwdIt last,const T val, Pred pr); 第1个模板函数功能是:在有序元素容器中,找出一对迭代指针midstart, midend,其间的元素都等于val。即:*(midstart+N)=val。如果有结果,结果保存在pair对象中,相当于pair(lower(first, last, val), upper(first,last,val))。 第2个模板函数与第1个模板函数功能相近:找出一对迭代指针midstart, midend,其间元素:pr(*(midstart+N), val)都是true。 ④binary_search 原型:templateclass FwdIt, class T bool binary_search(FwdIt first, FwdIt last, const T val); templateclass FwdIt, class T, class Pred bool bi

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档