查找数组中第K个最小值
类似快排,通过partition这个函数找到一个大于左边小于右边的数,如果这个数的序号大于K,在左边查找,小于K在右边查找。一个递归解决问题
代码:
#include<iostream>
using namespace std;
template<typename E>
int findpivot(E A[], int i, int j)
{
return (i + j) / 2;
}
template<typename E>
void swap(E A[], int i, int j)
{
E temp = A[i];
A[i] = A[j];
A[j] = temp;
}
template<typename E>
int partition(E A[], int l, int r, E&pivot)
{
do {
while ((A[++l]< pivot));
while ((l < r) && pivot < A[--r]);
E temp = A[l];
A[l] = A[r];
A[r] = temp;
} while (l < r);
return l;
}
template<class E>
E findK(E A[], int i, int j, int K)
{
if (j <= i)return A[i];
int pivotindex = findpivot(A, i, j);
swap(A, pivotindex, j);
int k = partition<E>(A, i - 1, j, A[j]);
swap(A, k, j);
A[k];
if (k == K-1)return A[k];
else if (k > K-1)return findK<E>(A, i, k - 1, K);
else return findK<E>(A, k + 1, j, K);
}
int main()
{
int array[8] = { 3,5,2,4,10,100,98,99};
cout << findK(array, 0, 7,5 ) << endl;
}
实现:
查找数组中第K个最小值相关推荐
- python实现查找数组中第k大的数
本文用python3实现查找数组中第k大的数.采用快速排序的方法实现. def findKth(s, k):return findKth_c(s, 0, len(s) - 1, k)def findK ...
- java查找第k大的数字_查找数组中第k大的数
问题: 查找出一给定数组中第k大的数.例如[3,2,7,1,8,9,6,5,4],第1大的数是9,第2大的数是8-- 思考:1. 直接从大到小排序,排好序后,第k大的数就是arr[k-1]. 2. ...
- 利用堆排序查找数组中第K小的元素方法
先从数组A[ ]中取前k个元素建立大根堆,然后再遍历剩下的n-k个元素, 如果大于或者等于堆顶,则舍弃: 如果小于堆顶,则将其与堆顶替换,并将换下来的堆顶舍弃,然后重新向下调整为大根堆,最后堆顶即为所 ...
- 同时查找数组中最大和最小值
查找数组中的最大值和最小值有下面的方法: 1.按照普通的方法进行查找,分别写出找到数组中最大值函数和最小值函数,这种方法很简单: 代码如下: int Min(int *pnArr, int nLen) ...
- 求数组中第k个最小数
一.问题描述 给定一个数组,数组中的数据无序,在一个数组中找出其第k个最小的数,例如对于数组x,x = {3,2,1,4,5,6},则其第2个最小的数为2. 二.解题思路 本算法跟快排的思想相似,首先 ...
- perl 哈希数组的哈希_第一个元素使用哈希在数组中出现K次
perl 哈希数组的哈希 Prerequisite: Hashing data structure 先决条件: 哈希数据结构 Problem statement: 问题陈述: Find the fir ...
- JavaScript 数组排序及查找数组中最大值最小值方法
JavaScript 数组排序方法及查找最大值最小值方法 1. sort()方法排序 1.1 方法介绍 1.2 语法:arr.sort([compareFunction]) 1.3 参数说明 1.4 ...
- es6 数组找最大值_JavaScript 查找数组中最大值与最小值
最小值算法如下: 将数组中第一个元素赋值给一个变量,把这个变量作为最小值: 开始遍历数组,从第二个元素开始依次和第一个元素进行比较: 如果当前的元素小于当前的最小值的话,就把当前的元素值赋值给最小值: ...
- 在数组中查找第k个最大元素_查找数组中每个元素的最近最大邻居
在数组中查找第k个最大元素 Problem statement: 问题陈述: Given an array of elements, find the nearest (on the right) g ...
最新文章
- 最近跑hadoop遇到的一些问题
- 【信息抽取】如何使用卷积神经网络进行关系抽取
- 如何理解 Objective-C Delegate
- [react] 请描述下你对react的新特性Hooks的理解?它有哪些应用场景?
- 90行代码让微信地球转起来,太酷了!(python实现)
- Python中的顺序表介绍
- 获取音、视频时长(NAudio,Shell32,FFmpeg)
- SpringCloud工作笔记056---mysql自增序列管理表_自增序列函数创建
- 技术随想--不求安稳,超越自我
- 在线教育市场为何因“最强雾霾”得利?
- Android APP开发入门教程-Button
- 不透明度16进制值对照表
- android P 锁屏初探 ——3 power键锁屏流程
- 初识软件工程-软件工程的产生与发展
- 过年表情包 || 一个月后就能用啦
- 全面吃透JAVA Stream流操作,让代码更加的优雅
- 青少年计算机编程经验,青少年学习计算机编程前景
- 【原创】为什么要用规则引擎?
- 【NLP】pyltp工具介绍、安装和使用代码+示例
- 六月计算机应用基础考试是啥,2017年6月计算机应用基础试题及答案