heap中取出k个最小值
来源:互联网 发布:上古卷轴5优化mod 编辑:程序博客网 时间:2024/05/08 14:27
#include<iostream>using namespace std;void MaxHeap(int heap[],int i,int len){int largeIndex = -1;int left =i*2;int right =2*i+1;if(left <= len && heap[left]>heap[i]) //分开判断的巧妙之处在于可能右孩子不存在的情况largeIndex = left;elselargeIndex = i;if (right <= len && heap[right]>heap[largeIndex])largeIndex = right;if(largeIndex != i){swap(heap[i], heap[largeIndex]);MaxHeap(heap, largeIndex, len);}}void BuildHeap(int heap[], int len){if(heap == NULL)return ;int index = len /2;for(int i = index; i>=1;i--)MaxHeap(heap,i,len);}int main(){int k;int a[10]={1,2,3,4,5,6,7,8,9,10};cin>>k;int *heap=new int[k+1];for(int i=1;i<=k;i++)cin>>heap[i];BuildHeap(heap,k); for(i=0;i<10;i++){if(a[i]< heap[1]){heap[1] = a[i];MaxHeap(heap, 1,k);}}for(int j=1;j<=k;j++)cout<<heap[j]<<" ";cout<<endl;}
0 0
- heap中取出k个最小值
- 查找数组中第K个最小值
- 寻找数组中第k个最小值,使用快速排序
- 从n个整数中取出其中k个,排成一组有序数的排序算法
- oracle 取出多个字段列中的最大值和最小值
- oracle取出多个字段列中的最大值和最小值
- Oracle 取出多个字段列中的最大值和最小值
- SqlServer取出多个字段列中的最大值和最小值
- oracle取出多个字段列中的最大值和最小值
- 从一个长度为n的数组中找出前k个最小值的最优实现
- N个元素取出最大(小)的K个元素
- N个元素取出最大(小)的K个元素
- 题目:N个元素取出最大的K个元素
- 获取数组中K个最大元素(k largest(or smallest) elements in an array | added Min Heap method)
- Java实现集合的组合(从组合中取出K个元素进行组合的所有情况)
- hdu1421n中选k个不相邻数的最小值
- 每日一题1:查找前k个最小值
- data_struction_test1:查找数组的前k个最小值
- Java中的split函数的用法
- hzw
- 医用平板
- make规则(整理)
- OpenCV 初级图像混合
- heap中取出k个最小值
- 《逆向工程核心原理》
- 动态链接库的显示加载和隐式加载的区别
- baiduK站的主要特征
- CRichEdit 设置透明背景
- On-screen Input Methods
- RK4
- 关于字符集和乱码的思考
- 看看你写的代码在面试官面前多少分数