C++中的partial_sort函数如何使用

tiankongzhiying 2011-06-29 10:30:23
msdn中的例子,但是我不理解它部分排序时如何得出这个结果的.希望达人指点一下,不需要描述这个函数的实现过程,只需要告诉我这个函数是怎么用的,因为我不知道这个例子经过这个函数为什么得出这个结果.谢谢
#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>

using namespace std ;

void main()
{
const int VECTOR_SIZE = 8 ;

// Define a template class vector of int
typedef vector<int> IntVector ;

//Define an iterator for template class vector of strings
typedef IntVector::iterator IntVectorIt ;

IntVector Numbers(VECTOR_SIZE) ;

IntVectorIt start, end, it ;

// Initialize vector Numbers
Numbers[0] = 4 ;
Numbers[1] = 10;
Numbers[2] = 70 ;
Numbers[3] = 30 ;
Numbers[4] = 10;
Numbers[5] = 69 ;
Numbers[6] = 96 ;
Numbers[7] = 7;

start = Numbers.begin() ; // location of first
// element of Numbers

end = Numbers.end() ; // one past the location
// last element of Numbers

cout << "Before calling partial_sort\n" << endl ;

// print content of Numbers
cout << "Numbers { " ;
for(it = start; it != end; it++)
cout << *it << " " ;
cout << " }\n" << endl ;

// sort the smallest 4 elements in the sequence
partial_sort(start, start+4, end, less<int>()) ;

cout << "After calling partial_sort\n" << endl ;

cout << "Numbers { " ;
for(it = start; it != end; it++)
cout << *it << " " ;
cout << " }\n" << endl ;
}


Program Output is:

Before calling partial_sort

Numbers { 4 10 70 30 10 69 96 7 }

After calling partial_sort

Numbers { 4 7 10 10 70 69 96 30 }

...全文
229 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
独酌逸醉 2011-06-30
  • 打赏
  • 举报
回复
你的问题和答案是相同的啊!
qq120848369 2011-06-30
  • 打赏
  • 举报
回复
最小堆...

堆排序执行K次之后逆转整个数组就好了.
tiankongzhiying 2011-06-30
  • 打赏
  • 举报
回复
我是想问如果我不电脑运行,怎么知道这个结果,假如这是一个面试题,有好几个选项,怎么得出他的结果.我现在只想知道他的用法,部分排序,到底是怎么个部分法.
maoxing63570 2011-06-29
  • 打赏
  • 举报
回复
如果你只想知道怎么用的话,上面的代码已经告诉你怎么用了。如果你想知道怎么实现的话,你可以看下stl源码剖析,看之前,看看数据结构的大顶堆

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧