堆排序中求前K个最小数
来源:互联网 发布:js截取子字符串 编辑:程序博客网 时间:2024/06/03 03:56
01.#include "iostream" 02.#include "vector" 03.#include "algorithm" 04.using namespace std; 05.void HeapAdjust(std::vector<int> &a,int i,int size){ 06. int lchild = 2*i + 1; 07. int rchild = 2*i + 2;08. int max = i;09. if(i < size/2 ){10. if(lchild<size&&a[lchild]>a[max]) max = lchild;11. if(lchild<size&&a[rchild]>a[max]) max = rchild; 12. if(max != i){13. swap(a[i],a[max]); 14. HeapAdjust(a,max,size); 15. } 16. } 17.} 18.void BuildHeap(std::vector<int> &a,int k){ 19. for (int i = k-1; i >= 0; --i) 20. { 21. HeapAdjust(a,i,k); 22. } 23.} 24.int main(int argc, char const *argv[]) 25.{ 26. std::vector<int> a(6); 27. a[0] = 3;a[1] = 11; a[2] = 8;a[3] = 2; 28. a[4] = 9;a[5] = 4; 29. int k = 3;//取前k最小的 30. BuildHeap(a,k); 31. for (int i = k; i < a.size(); ++i) 32. { 33. if(a[0] > a[i]) { 34. swap(a[0],a[i]); 35. HeapAdjust(a,0,k); 36. } 37. } 38. for (int i = 0; i < k; ++i) 39. { 40. cout<<a[i]<<"\t"; 41. } 42. return 0; 43.}
0 0
- 堆排序中求前K个最小数
- 寻找数组中前K个最小的数(Kth smallest element)---(堆排序的应用)
- 用堆排序实现查找最小的K个元素
- 堆排序 选取最小的k个值
- k个最小的数
- 用最小堆将k个已排序链表合并为一个排序链表
- 堆排序之“用最小堆将k个已排序链表合并为一个排序链表”
- 堆排序(最小的K个数)
- 【java】堆排序 最小的k个数
- 堆 求最数大最小前k个sh
- 用堆排序实现查找最小的K个元素 java
- 堆处理海量数据----求前k个最小的数--时间复杂度(n * log k)
- 求K个最小的数
- boj_420_求第k个最小数
- 找第K个最小数
- 找出数组中第K个最小的数(快速排序)
- 第六章堆排序之“用最小堆将k个已排序链表合并为一个排序链表”(练习6.5-8)
- 第六章堆排序之“用最小堆将k个已排序链表合并为一个排序链表”(练习6.5-8)
- js 获取html的select中的option的值
- sdut2610--Boring Counting(二分+划分树)
- console.dir()和console.log()的区别
- nodejs的require会寻找目录下默认的index文件,如果只提供目录路径的话
- 在Azure 环境里安装 SharePoint 2013 系统(二)附加磁盘和 安装SharePoint 2013
- 堆排序中求前K个最小数
- 【详细步骤】开启计算机远程桌面
- 用M4芯片的HASH模块计算SHA1和HMAC_SHA1
- MOS管的开关特性
- burpsuite_pro_v1.5.18 破解版
- 样式的设置和调用
- Tomcat目录下各个文件夹的作用
- NMOS&PMOS特点
- Android 实用工具Hierarchy Viewer实战