类似快排,通过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个最小值相关推荐

  1. python实现查找数组中第k大的数

    本文用python3实现查找数组中第k大的数.采用快速排序的方法实现. def findKth(s, k):return findKth_c(s, 0, len(s) - 1, k)def findK ...

  2. java查找第k大的数字_查找数组中第k大的数

    问题:  查找出一给定数组中第k大的数.例如[3,2,7,1,8,9,6,5,4],第1大的数是9,第2大的数是8-- 思考:1. 直接从大到小排序,排好序后,第k大的数就是arr[k-1]. 2. ...

  3. 利用堆排序查找数组中第K小的元素方法

    先从数组A[ ]中取前k个元素建立大根堆,然后再遍历剩下的n-k个元素, 如果大于或者等于堆顶,则舍弃: 如果小于堆顶,则将其与堆顶替换,并将换下来的堆顶舍弃,然后重新向下调整为大根堆,最后堆顶即为所 ...

  4. 同时查找数组中最大和最小值

    查找数组中的最大值和最小值有下面的方法: 1.按照普通的方法进行查找,分别写出找到数组中最大值函数和最小值函数,这种方法很简单: 代码如下: int Min(int *pnArr, int nLen) ...

  5. 求数组中第k个最小数

    一.问题描述 给定一个数组,数组中的数据无序,在一个数组中找出其第k个最小的数,例如对于数组x,x = {3,2,1,4,5,6},则其第2个最小的数为2. 二.解题思路 本算法跟快排的思想相似,首先 ...

  6. perl 哈希数组的哈希_第一个元素使用哈希在数组中出现K次

    perl 哈希数组的哈希 Prerequisite: Hashing data structure 先决条件: 哈希数据结构 Problem statement: 问题陈述: Find the fir ...

  7. JavaScript 数组排序及查找数组中最大值最小值方法

    JavaScript 数组排序方法及查找最大值最小值方法 1. sort()方法排序 1.1 方法介绍 1.2 语法:arr.sort([compareFunction]) 1.3 参数说明 1.4 ...

  8. es6 数组找最大值_JavaScript 查找数组中最大值与最小值

    最小值算法如下: 将数组中第一个元素赋值给一个变量,把这个变量作为最小值: 开始遍历数组,从第二个元素开始依次和第一个元素进行比较: 如果当前的元素小于当前的最小值的话,就把当前的元素值赋值给最小值: ...

  9. 在数组中查找第k个最大元素_查找数组中每个元素的最近最大邻居

    在数组中查找第k个最大元素 Problem statement: 问题陈述: Given an array of elements, find the nearest (on the right) g ...

最新文章

  1. 最近跑hadoop遇到的一些问题
  2. 【信息抽取】如何使用卷积神经网络进行关系抽取
  3. 如何理解 Objective-C Delegate
  4. [react] 请描述下你对react的新特性Hooks的理解?它有哪些应用场景?
  5. 90行代码让微信地球转起来,太酷了!(python实现)
  6. Python中的顺序表介绍
  7. 获取音、视频时长(NAudio,Shell32,FFmpeg)
  8. SpringCloud工作笔记056---mysql自增序列管理表_自增序列函数创建
  9. 技术随想--不求安稳,超越自我
  10. 在线教育市场为何因“最强雾霾”得利?
  11. Android APP开发入门教程-Button
  12. 不透明度16进制值对照表
  13. android P 锁屏初探 ——3 power键锁屏流程
  14. 初识软件工程-软件工程的产生与发展
  15. 过年表情包 || 一个月后就能用啦
  16. 全面吃透JAVA Stream流操作,让代码更加的优雅
  17. 青少年计算机编程经验,青少年学习计算机编程前景
  18. 【原创】为什么要用规则引擎?
  19. 【NLP】pyltp工具介绍、安装和使用代码+示例
  20. 六月计算机应用基础考试是啥,2017年6月计算机应用基础试题及答案

热门文章

  1. 单调递增最长子序列 - 从最长公共子序列到单调递增最长子序列
  2. C/C++从入门到高手所有必备PDF书籍收藏
  3. 熊猫烧香源代码(转载)
  4. 分布式事务中间件 Fescar - 全局写排它锁解读
  5. application.properties中自定义属性的使用
  6. Iterator:访问数据集合的统一接口
  7. nginx-启动gzip、虚拟主机、请求转发、负载均衡
  8. shell 常用命令语句
  9. Markdown编辑器“MarkdownPad”下载安装(图)
  10. 【AwayPhysics学习笔记】:Away3D物理引擎的简介与使用