找出N个浮点数中最大的k个不同的浮点数
来源:互联网 发布:淘宝如何设置选项卡 编辑:程序博客网 时间:2024/06/01 07:36
N个浮点数中,有相同的浮点数,找出其中最大的k个不同的浮点数;
用容量为k的最小堆存储最大的k个不同的浮点数,堆顶就是k个中最小的浮点数,遍历N个数,与堆顶元素比较大小,若比堆顶元素大,则与之交换,调整最小堆。
void Heap(float heap[],int i,int size) { int l,r,mix; float temp; l = 2*i; r = 2*i+1; if(l<size&&heap[l-1]<heap[i-1]) mix = l; else mix = i; if(r<size&&heap[r-1]<heap[mix-1]) mix = r; if(mix != i) { temp = heap[mix-1]; heap[mix-1] = heap[i-1]; heap[i-1] = temp; Heap(heap,mix,size); } } void createHeap_And_Sort(float heap[],int n) { int m = n/2,size = n; for(int j = m;j>0;j--) Heap(heap,j,size); } int main(void){int k = 3,num=0,flag=0,i,j;float data[10] = {1.5,1.5,2.5,2.5,3.5,3.5,5,0,-1.5,3.5};float heap[3];heap[0] = data[0];num++;for(i = 1;i<10;i++){for(j=0;j<num;j++)if(data[i]==heap[j]){flag = 1;break;}if(flag == 0){heap[num] = data[i];num++;}if(num==k)break;flag = 0;} createHeap_And_Sort(heap,k);for(i = k;i<10;i++){if(data[i]>heap[0]){heap[0] = data[i];Heap(heap,0,k);}}for(i = 0;i<k;i++)cout<<heap[i]<<endl;return 0;}
- 找出N个浮点数中最大的k个不同的浮点数
- 找出N个数中最大的K个不同的浮点数
- 面试-从10亿个浮点数中找出最大的1万个
- [转]从10亿个浮点数中找出最大的1万个
- 面试-从10亿个浮点数中找出最大的1万个
- 从10亿个浮点数中找出最大的1万个
- 求在一组N个的数中找出第K个最大数
- n个数里找出前m个数(或者 从10亿个浮点数中找出最大的1万个)
- 有10亿个浮点数,从中找出1万个最大的数。
- 有10亿个浮点数,从中找出1万个最大的数。
- 有10亿个浮点数,从中找出1万个最大的数。
- 有10亿个浮点数,找出一万个最大的数
- 找出数组中第K个最大的数
- 要求:给定一个文件,文件每一行为一个浮点数,找出最大的1万个
- n个元素的数组中找出前K个最大数最有效算法O(nlg(k))
- 典型的Top K算法_找出一个数组里面前K个最大数...或找出1亿个浮点数中最大的10000个...一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入内存,
- 典型的Top K算法_找出一个数组里面前K个最大数...或找出1亿个浮点数中最大的10000个...一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入内存,
- 典型的Top K算法_找出一个数组里面前K个最大数...或找出1亿个浮点数中最大的10000个...一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入内存
- 10065 - Useless Tile Packers
- 计算机为什么选用二进制补码(2)---选用补码原因
- hdu 4460 && hdu 4461 && hdu 4463
- Java之泛型编程
- Python标准库04 文件管理 (部分os包,shutil包)
- 找出N个浮点数中最大的k个不同的浮点数
- 输入输出一行文本
- dodo:人脸识别方法个人见解
- Ext JS百强应用: 要用EXTJS,先了解javascript 的oop--第5强
- SQLServer删除/重建/禁用/启用外键约束
- 2013-06-16 读书笔记 大前研一 《无国界的世界》
- HEVC核心编码技术之六.环路滤波,SAO及其它
- onbeforeunload与onunload事件总结:
- 地址