怎么使用C++在无序数组中实现选择第k小个数
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天小编给大家分享一下怎么使用C++在无序数组中实现选择第k小个数的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获
千家信息网最后更新 2026年11月03日怎么使用C++在无序数组中实现选择第k小个数
今天小编给大家分享一下怎么使用C++在无序数组中实现选择第k小个数的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
从一个无序的整型数组中选出第k小的数,如k=1为最小数,k=n为最大数。这里数组可以是有重复的值!
下面是自己写的一个函数,记在此处来记忆我留下的痕迹!
//选择无序数组中第k小的数#includeusing namespace std ;bool failed = false ;//这里只考虑数组是int型的int findnumber(int *array,int start , int end, int k){ if(array == NULL || start > end || k < start || k > end+1 || k <= 0 ) { failed = true ; return 0; } if(start == end) { return array[start] ; } int len = end - start + 1 ; int tmp = 0 ; int ps = rand()%len +start ; int tk = k ; while(true) { //分割两数组 int f = start ; int t = array[ps] ; int equalnum = 0 ; for(int i = start ; i <= end ; i ++ ) { if(array[i]< t ) { tmp = array[f]; array[f] = array[i]; array[i] = tmp ; f ++ ; }else if(array[i] == t) { tmp = array[f]; array[f] = array[i]; array[i] = tmp ; f ++ ; equalnum ++ ; } } //end f--; if(equalnum > tk && (f - start + 1) == equalnum) { return t ;//这里是记录数据相等的数目,当我们从开始start处到最后处end都被这个值给充斥了,那么肯定是这里面的值了,再进行下去就会陷入死循环了。 } if(tk == (f - start + 1) ) { return t ; } if((f - start + 1 ) > tk ) { end = f ; }else { start = f + 1 ; tk = k - start ; //这个地方犯过错误,就是写成了k=k-start,在调试的时候老发现无限的循环。后来打印k的值的时候发现k的值都***为负了。这个bug,这个过错使得在一次运行可能会得到正确的数据,但是多次运行后程序就崩溃。 } len = end - start + 1 ; ps = rand()%len +start ; }}int main(){ int array[10] = {1,1,1,2,2,1,4,1,1,1}; for(int i = 0 ; i < 10 ; i ++ ) { cout< 以上就是"怎么使用C++在无序数组中实现选择第k小个数"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
数组
知识
篇文章
选择
个数
C++
中实
内容
就是
数据
时候
过错
面的
循环
运行
不同
很大
最大
最小
函数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
北京路客互联网科技有限公司
上海互联网科技有限公司
互联网与新科技
互联网科技的英文
善班互联网科技有限公司
深圳天众互联网科技公司
互联网科技有限公司 翻译
湖南洣水互联网科技有限公司扣款
温州喔噻互联网科技有限公司
湖南诚度互联网科技有限公司
移动互联网科技公司
健康食品互联网创新科技园项目
区块链结合互联网科技
科技互联网的核心竞争力
2021互联网科技公司排名
云南省自由互联网科技有限公司
扫呗互联网科技有限公司
米泉互联网科技专业怎么样
美国五大互联网科技公司市值多少
优雇互联网科技有限公司
互联网络科技
碳银互联网科技有限公司
美国互联网前沿科技
互联网科技生活的内容
金融科技与互联网金融相同和不同
花神(南京)互联网科技有限公司
华夏恒生互联网科技013171
江苏苏星互联网科技有限公司
互联网科技快讯热点
青岛互联网科技园