C++ nth_element排序算法

函数头文件:<algorithm>

default (1) template <class RandomAccessIterator> void nth_element (RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last);
custom (2) template <class RandomAccessIterator, class Compare> void nth_element (RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last, Compare comp);

应用的范围由它的第一个和第三个参数指定。第二个参数是一个指向第 n 个元素的迭代器。如果这个范围内的元素是完全有序的,nth_dement() 的执行会导致第 n 个元素被放置在适当的位置。这个范围内,在第 n 个元素之前的元素都小于第 n 个元素,而且它后面的每个元素都会比它大。

代码演示:

// nth_element example
#include <iostream>     // std::cout
#include <algorithm>    // std::nth_element, std::random_shuffle
#include <vector>       // std::vectorbool myfunction (int i,int j) { return (i>j); } //比较函数int main () {std::vector<int> myvector;// set some values:for (int i=1; i<10; i++) myvector.push_back(i);   // 1 2 3 4 5 6 7 8 9std::random_shuffle (myvector.begin(), myvector.end());//随机// using default comparison (operator <):std::nth_element (myvector.begin(), myvector.begin()+5, myvector.end());// using function as compstd::nth_element (myvector.begin(), myvector.begin()+5, myvector.end(),myfunction);// print out content:std::cout << "myvector contains:";for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)std::cout << ' ' << *it;std::cout << '\n';return 0;
}

C++ nth_element排序算法相关推荐

  1. 如何在现代C ++中实现经典排序算法?

    本文翻译自:How to implement classic sorting algorithms in modern C++? The std::sort algorithm (and its co ...

  2. 伍六七带你学算法 进阶篇-排序算法

    给定一个整数数组 nums,将该数组升序排列. 示例 1: 输入:[5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:[5,1,1,2,0,0] 输出:[0,0,1,1,2,5] 各排序算 ...

  3. C++排序算法实现(更新中)

    比较排序法:如冒泡排序.简单选择排序.合并排序.快速排序.其最优的时间复杂度为O(nlogn). 其他排序法:如桶排序.基数排序等.时间复杂度可以达到O(n).但试用范围有要求. 桶排序:排序的数组元 ...

  4. 十种经典排序算法精粹(c语言版本)

    下面给出这段时间我苦心研究验证过的十种经典排序算法的C语言版本,即下面的排序算法: 插入排序,shell排序,冒泡排序,快速排序,选择排序,堆排序,归并排序,桶排序,基数排序和计数排序.整理出来以作备 ...

  5. 十大排序算法 导图总结

    以下为我们经常用到的十大典型排序算法导图,很多设计以及优化的思想值得去参考学习 因为代码较多,所以都添加到对应的实现注释中了,相关代码可以从Mind-mapping获取xmind源文件 参考文档: 基 ...

  6. C++实现十大排序算法(冒泡,选择,插入,归并,快速,堆,希尔,桶,计数,基数)排序算法时间复杂度、空间复杂度、稳定性比较(面试经验总结)

    排序算法分类 内部排序算法又分为基于比较的排序算法和不基于比较的排序算法,其分类如下: 比较排序:   直接插入排序    希尔排序 (插入)  冒泡排序     快速排序  (交换) 直接选择排序  ...

  7. C++拾取——使用stl标准库实现排序算法及评测

    今天看了一篇文章,讲各种语言的优势和劣势.其中一个观点:haskell非常适合写算法,因为使用者不用去关心具体的计算机实现,而只要关注于操作语义.这让它在专心研究算法的人中非常受欢迎.所以很多时候,语 ...

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

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

  9. python 排序算法 简书_Python---简析八大排序算法

    前言 1 .排序的概念 排序是计算机内经常进行的一种操作,其目的是将一组"无序"的记录序列调整为"有序"的记录序列. 排序分为内部排序和外部排序. 若整个排序过 ...

最新文章

  1. vue.js学习系列-第二篇
  2. 【计算机网络】网络安全 : 报文鉴别 ( 密码散列函数 | 报文摘要算法 MD5 | 安全散列算法 SHA-1 | MAC 报文鉴别码 )
  3. .NET Core IdentityServer4实战 第Ⅳ章-集成密码登陆模式
  4. Java基础学习总结(146)——开发人员日志实践规范
  5. 感觉自己不适合编程 确学了计算机专业,高薪程序员:“我劝他学医,别学计算机,却被冤枉在害人”...
  6. Spring-context-ConfigurationClassUtils类
  7. 怎样的高管才能得到下属的信任?
  8. python在线学习直播-Python在线学习最有效马哥开启全网独家全程直播课
  9. 原生ajax 和jquery ajax 个人总结
  10. 2018.08.21随笔
  11. 【转】Maven 手动添加 JAR 包到本地仓库
  12. 文本编辑器Vim/Neovim任意代码执行漏洞(CVE-2019-12735)
  13. 基于PHP的超市库存管理系统
  14. wps转html乱码,wps转换成word后乱码
  15. 一次性发布20个音频IP,看喜马拉雅FM解锁品牌营销新姿势
  16. vue文字首尾相连无限轮播
  17. 慕课moocpython答案_中国大学慕课moocPython编程基础作业答案
  18. 写代码累了,读读这些书~
  19. 什么是嵌入式开发?嵌入式软件开发入门教程
  20. OpenCv 在Win7台式机上的摄像头无法拍照

热门文章

  1. matlab的主要功能与应用领域,MatLab的特点及应用领域?
  2. dingding(钉钉)+sonar(代码质量管理工具)通知并打包成docker容器运行
  3. android番茄钟计时器
  4. depot_tools在windows上用遇到的问题和RTC编译出错
  5. SAP: ZSD012 Send Billing Document to Customer with PDF Attachment
  6. android studio新闻界面,课内资源 - 基于Android Studio实现的新闻APP
  7. ckplayer播放器的style.zip(干货)
  8. 学习python用哪个app-python做app用什么工具
  9. MP4文件格式详解(ISO-14496-12/14)
  10. Typora自定义主题#简约风主题