博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法设计--查找无序数组中第K大的数字
阅读量:4349 次
发布时间:2019-06-07

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

    给出一个数组,要求查找出这个数组中按顺序排第K大的数字。

思路:利用快速排序的思想,把数组中的元素分治,并计算中间值的位置,如果是K,则这个数就是第K大的数字,如果比K小,那么再次利用快速排序分治中值 以后的数据,如果比K大,则排序前面的数字,直到找到K的位置。

下面给出C++实现的代码:

#include 
#include
using namespace std;int partition(int data[],int first,int last) //¿ìËÙÅÅÐòµÄ·Öλ {int pivot=data[first];while(first
pivot) last--; data[first]=data[last];while(first
splitPoint) kth=findKth(data,splitPoint+1,last,k);else kth=pivot; } return kth;}int main(int argc, char *argv[]){ int a[11]={-1,11,17,18,5,7,14,9,6,27,21}; //ÕýÈ·µÄ˳ÐòÊÇ£º5,6,7,9,11,14,17,18,21,27 int t=findKth(a,1,10,6); cout<
<

转载于:https://www.cnblogs.com/pepcod/archive/2013/01/30/2937383.html

你可能感兴趣的文章
Hadoop的运行痕迹
查看>>
caioj1495: [视频]基于连通性状态压缩的动态规划问题:Formula 2
查看>>
2014025680(22)《嵌入式系统程序设计》第三、四周学习总结
查看>>
什么样的人适合编程
查看>>
W5500初始化过程
查看>>
开关电源9v,1A
查看>>
下载360doc.com里的文章
查看>>
【转】globk和glorg中使用的apr文件
查看>>
导航,头部,CSS基础
查看>>
PostMessage 解析
查看>>
Java语法基础(一)
查看>>
关于String StringBuffer 和 StringBulider
查看>>
as3 sort
查看>>
STL传递比较函数进容器的三种方式
查看>>
hdu 2680 Choose the best route Dijkstra 虚拟点
查看>>
Python _ 开始介绍对象
查看>>
系统视图介绍
查看>>
第一次接触FPGA至今,总结的宝贵经验
查看>>
Ubuntu下libpcap安装步骤
查看>>
26. Remove Duplicates from Sorted Array java solutions
查看>>