寻找第K小的数(O(n))
寻找第K小的数,使用的方法有多种。今天,我主要是使用面试中面试官想要的方法。就是运用快排的思想在O(n)时间内得到结果。
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdio>
#include <cstring>
using namespace std;int FindNumberK(vector<int>&iv,int k,int s,int e)
{int roll = iv[s],be = 0,j = s;for(int i = s+1;i <= e;++i){if(iv[i] < roll){++j;swap(iv[i],iv[j]);++be;}}swap(iv[j],iv[s]);if(be == k-1)return roll;else if(be < k-1){return FindNumberK(iv,k-1 -be,j+1,e);}elsereturn FindNumberK(iv,k,s,j-1);
}
int main()
{int n;while(cin>>n){vector<int> iv,rv;for(int i = 0;i != n;++i){int val;cin>>val;iv.push_back(val);rv.push_back(val);}int k;cout<<"Please input a K num: ";cin>>k;if(k < 0||k >= iv.size()){cout<<"Error\n";exit(1);}int res = FindNumberK(iv,k,0,iv.size()-1);cout<<"Test Result : "<<res<<endl;sort(rv.begin(),rv.end(),less<int>());cout<<"Real Result : "<<rv[k-1]<<endl;}return 0;
}
寻找第K小的数(O(n))相关推荐
- (寻找第K小的数amp;amp;寻找第K小的数的和)
这一篇博客以一些OJ上的题目为载体,讲一下寻找第K小的数的方法 方法一: 先将数据排列好,然后,然后return a[k]或者将前K个数加起来 方法二: 基于高速排序.如,一次高速排序将某一个数放到了 ...
- 分治-寻找第k小的数
给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素 template<class Type> Type RandomizedSelect(Type a[],i ...
- python递归算法 电影院票价问题_算法课堂实验报告(二)——python递归和分治(第k小的数,大数乘法问题)...
python实现递归和分治 一.开发环境 开发工具:jupyter notebook 并使用vscode,cmd命令行工具协助编程测试算法,并使用codeblocks辅助编写C++程序 编程语言:py ...
- 分治算法求解列表中第k小的数
分治算法地思想就是将复杂问题分解为简单的子问题,然后寻求子问题的地归结,并组合各个子问题的解一起得到最终复杂问题的解. 针对求解列表中第k小的数,暴力拆解法可以将列表排序然后根据索引求出列表中第k小的 ...
- 面试官:海量无序数据,寻找第 K 大的数,越快越好
最近在参加阿里云举办的<第三届数据库大赛创新上云性能挑战赛--高性能分析型查询引擎赛道>,传送门: https://tianchi.aliyun.com/competition/entra ...
- 海量无序数据寻找第 K 大的数
前言 最近在参加阿里云举办的<第三届数据库大赛创新上云性能挑战赛--高性能分析型查询引擎赛道>,传送门:https://tianchi.aliyun.com/competition/ent ...
- C语言寻找第k小元素,小技巧——查找第k小的元素
今天分享一个小技巧,虽然是小技巧但是还是很有价值的,曾经是微软的面试题.题目是这样的,一个无序的数组让你找出第k小的元素,我当时看到这道题的时候也像很多人一样都是按普通的思维,先排序在去第K个,但是当 ...
- 算法-寻找第k小元素(C)
序言 刚开始我认为,寻找第k小的元素:简单呀,先对所有元素排序,之后再找不就完事啦,这时时间复杂度在O(nlgn).那有没有更好的排序的方法了呢?答案:当然是有的. 算法基本思路: (1) 当规模小于 ...
- 7-1 找第k小的数 (20 分)
设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数. 提示:函数int partition(int a[],int left,int right)的 ...
最新文章
- 5GS 协议栈 — PFCP 协议 — PDR 报文检测规则
- 文献记录(part60)--高维模型选择方法综述
- js pug 代码_pug模版学习(一)
- 2018--20179215--《文献管理与信息分析》第三讲 英文数据库资源的发展趋势和利用...
- Codeforces 120F Spiders
- DeFi协议TrueFi:TRU/ETH流动性挖矿将从Uniswap迁移至SushiSwap
- asp 环境配置到mysql数据库增删改查
- java私塾跟我学系列_java 私塾作业
- 酒店的月收入报表java_统计报表_宾馆明细收入报表
- android xml属性,android中解析XML androidxml属性大全
- 批处理 文件注释_批处理文件注释
- IDEA从Git 上down 项目报错
- was英文读音_英语单词was怎么读
- 语音芯片播报方案选型补充说明
- 【转载】魔方教程七步玩转魔方
- Flash----读写外部Flash
- MyBatis万能插入语句
- 最长公共子序列问题-----题目
- 仿支付宝钱包:带分割线的GridView
- 黑马程序员————集合框架1(day14)
热门文章
- MySQL数据库之索引
- 【网工手艺】专栏入口(网工学习实战+网络自动化运维探讨)
- 典型的SS7呼叫信令流程(真)
- Python SOCKS5 二级代理服务器 实现白名单与网络控制
- 历史上的今天:C 语言之父逝世;西门子诞生;乔布斯推出 NeXT 电脑
- android auto 华为p30手机,华为p30专业模式如何使用?
- 联想E480笔记本安装ubuntu16.04后没有wifi信号
- 【故障解决】ORA-17630: Mismatch in the remote file protocol version client 2
- 安装anaconda+tensorflow
- 拳头服务器什么时候修复,这些LOL客户端BUG你中招了吗?拳头设计师要修复,时长令人无语...