查找数组中第k大的数的位置
代码:
<!--StartFragment-->#include <iostream>
using namespace std;
int find_orderk(int* narry,const int n,const int k)
{
if(k>n) {
return -1;
}
int max = *narry;
int min = *narry;
int position = 0;
int i = 1;
while(i < n) {
int number = narry[i];
if(max < number)
{
max = number;
position = i;
}
if(min > number){
min = number;
}
i++;
}
if(k!= 1) {
narry[position] = min - 1;
int new_k = k - 1 ;
return find_orderk(narry,n,new_k);
}else {
return position;
}
}
int main()
{
int n [] = {8,10,1,2,3,4,7,5};
int position = find_orderk(n,8,4);
cout << position << endl;
return 0;
}<!--EndFragment-->
分享到:
相关推荐
给定一数组,查找数组中第k大的数。代码中借助快速排序中的partition方法来实现。
主要介绍了Python实现查找数组中任意第k大的数字算法,涉及Python针对数组的排序、查找等相关操作技巧,需要的朋友可以参考下
在编程中非常常用的算法:计算整形数组中第k小的数
本文实例讲述了C++算法之在无序数组中选择第k小个数的实现方法。分享给大家供大家参考,具体如下: 从一个无序的整型数组中选出第k小的数,如k=1为最小数,k=n为最大数。这里数组可以是有重复的值! 下面是自己写的...
典型的Top K算法 找出一个数组里面前K个最大数.doc
本文实例讲述了PHP查找数组中只出现一次的数字实现方法。分享给大家供大家参考,具体如下: 问题: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 实现代码如下:...
求链式线性表的倒数第K项,给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。
首先将向量V从中间位置分开,分成左和右,分好后,中间值的索引如果恰恰等于K,就找到了,否则如果中间元素索引大于K,则在左子表中继续查找,忽略右子表,如果中间值索引小于K,则在右子表中继续查找,如此循环往复...
输入由两行构成,第一行为两个整数n和k,分别表示数列中整数个数和待查找整数k,n和k之间用空格分隔,0,0<k。 第二行为n个整数,表示数列中的各个整数,整数之间用空格分隔,每个整数均不超过10000。 输出说明: ...
旋转k位后,元素分别为nums[k],nums[k+1]...nums[0]...nums[k-1]。请查找target 是否存在,如果存在返回所在索引;否则返回-1。假定nums没有重复的元素。 假定排序后的数组为{1,2,3,4,5}。 旋转0位:不变。 旋转1位...
这是要求查找数组中第K小的元素:首先证明这个算法的正确性,如下图:结果为:结果正确,数组中第8小的数为11.接下来做10万条数据,5次测试,并附带使用快速排序再
统计一个数字在排序数组中出现的次数。 题解 既然是排序数组,使用二分查找是效率最高的。找到之后再向两侧拓展一下。 代码 <?php function GetNumberOfK($data, $k) { if(count($data)==0){ return 0; } $...
思路:二分查找法,分别找到此数字在排序数组中第一次和最后一次出现的位置,然后次数等于两个位置之差加1。 时间复杂度:O(log n) 解题思路一: class Solution: def GetNumberOfK(self, data, k): number = 0 ...
* 二叉查找树-中第K小的元素 * 二叉查找树-从有序数组中构造二叉查找树 * 二叉查找树-从有序链表构造平衡的二叉查找树 * 二叉树-的最大深度 数组&字符串 查找排序 排列组合 动态规划 树 链表 数学 位运算 编程之美
2.如果我们去掉其中一个数组比中位数小的k个数,再去掉另一个数组中比中位数大的k个数,得到的合并子数组的中位数和原来的中位数相同。 eg:[1,2,3],[1,2,3] => [1,1,2,2,3,3] 根据定理去除元素[2,3],[1
本文实例讲述了C++实现的O(n)复杂度内查找第K大数算法。分享给大家供大家参考,具体如下: 题目:是在一组数组(数组元素为整数,可正可负可为0)中查找乘积最大的三个数,最后输出最大乘积。 从题目我们知道只有两...
搜索数组中是否有“对和值”等于 x;返回下标乘积最大数;二分法搜索 low ... high 之间的最小数;计算数组的最大哈明距离;移动所有的 0 到数组末尾;Fisher-Yates洗牌算法,听起来很高大上 :P;计算第 k 个最小数...
// // 如果查找结果是-1表示空数组里面没有原始数组循环遍历的那一项,然后把遍历的哪一项push到空数组里。 // // 一直往空数组里面添加符合条件indexof等于-1的项,生成的新数组。这个新数组就是去重后的数组. /...
js代码-第 k 大的数字