博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程算法 - 最小的k个数 红黑树 代码(C++)
阅读量:5117 次
发布时间:2019-06-13

本文共 1117 字,大约阅读时间需要 3 分钟。

最小的k个数 红黑树 代码(C++)

本文地址: http://blog.csdn.net/caroline_wendy

题目: 输入n个整数, 找出当中的最小k个数.

使用红黑树(multiset), 每次替换最大的值, 依次迭代.

时间复杂度: O(nlogk).

代码:

/* * main.cpp * *  Created on: 2014年6月29日 *      Author: wang */#include 
#include
#include
#include
#include
using namespace std;void GetLeastNumbers (const vector
& data, multiset
>& leastNumbers, std::size_t k){ leastNumbers.clear(); if (k < 1 || data.size() < k) return; for (vector
::const_iterator iter = data.begin(); iter != data.end(); ++iter) { if (leastNumbers.size() < k) { leastNumbers.insert(*iter); } else { multiset
>::iterator iterGreatest = leastNumbers.begin(); if (*iter < *iterGreatest) { leastNumbers.erase(iterGreatest); leastNumbers.insert(*iter); } } }}int main(void){ vector
input = {4, 5, 1, 6, 2, 7, 3, 8}; multiset
> output; GetLeastNumbers (input, output, 4); std::copy(output.begin(), output.end(), std::ostream_iterator
(std::cout, " ")); std::cout << std::endl; return 0;}
输出:

4 3 2 1

转载于:https://www.cnblogs.com/mengfanrong/p/4014298.html

你可能感兴趣的文章
rsync
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
移动设备显示尺寸大全 CSS3媒体查询
查看>>
图片等比例缩放及图片上下剧中
查看>>
【转载】Linux screen 命令详解
查看>>
background-clip,background-origin
查看>>
Android 高级UI设计笔记12:ImageSwitcher图片切换器
查看>>
Blog文章待看
查看>>
【Linux】ping命令详解
查看>>
对团队成员公开感谢博客
查看>>
java学习第三天
查看>>
python目录
查看>>
django+uwsgi+nginx+sqlite3部署+screen
查看>>
Andriod小型管理系统(Activity,SQLite库操作,ListView操作)(源代码下载)
查看>>
在Server上得到数据组装成HTML后导出到Excel。两种方法。
查看>>
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>