快速排序 求第k大数
- 快排利用标兵的思想,但每一次都是比较范围大小,没有精确排序。
- 同样适用于快速求解 需要定性的范围问题,例如:第k大(将前后定性大小,但不用排序).
- 求解第k大:通过判断下标,只计算有k的那一半。
- 快排是从广到窄的递归。
快排:a.枢轴要回归.b.i总是指向偏大的值.
void quick_sort(int *A, int x, int y)//左闭右闭 { if(x < y)//当有1或0个元素是退出 {int i = x;int j = y; //取中值,优化快排速度,优化效果明显,4%~5%。int m = x + (y-x)/2;if(A[x] > A[m])if(A[x] > A[y])if(A[m] > A[y])swap(A[m],A[y]);elseswap(A[x],A[y]);else//A[x]<A[m]if(A[x] > A[y])swap(A[x],A[y]);elseif(A[y] > A[m])swap(A[m],A[y]); //优化结束int key = A[y];while(true){while(i < j && A[i] <= key)//因为先从左开始遍历,所以A[i]一定是偏大的值++i;while(i < j && A[j] >= key)--j;if(i < j)swap(A[i],A[j]);elsebreak;++i;//不能同时--j,否则会有bug。}swap(A[i],A[y]);//将枢纽归位quick_sort( A,x, i-1);quick_sort( A,i+1, y); } }
快速排序 求第k大数相关推荐
- 整数无序数组求第k大数
题目来自牛客网 https://www.nowcoder.com/practice/097ab63cffa847d89716f2ca8c23524f?tpId=90&tqId=30914&am ...
- 无序数组求第k大的数 python_整数无序数组求第K大数
import java.util.Scanner; /** * 类似与求第k小的问题 * 求第k大相当于求第n-k+1小,n为数组长度 * * 著名的BFPRT算法可保证在线性时间内得到结果. * h ...
- c++求区间第k大数_数组中求第K大数的实现方法
问题:有一个大小为n的数组A[0,1,2,-,n-1],求其中第k大的数. 该问题是一个经典的问题,在<算法导论>中被作为单独的一节提出,而且其解决方法很好的利用了分治的思想,将时间复杂度 ...
- 整数无序数组求第K大数(暴力|快排) - 滴滴出行2018校园招聘内推笔试-研发工程师
时间限制:1S 空间限制:32768K 题目描述: 给定无序整数序列,求第K大的数,例如{45,67,33,21},第2大的数为45 输入描述: 输入第一行为整数序列,数字用空格分割,如:45 67 ...
- C++实现数组中求第K大数
参考:http://blog.csdn.net/hackbuteer1/article/details/6651804 #include<iostream> using namespace ...
- 算法 {多路归并,二路归并,第K大数}
catalog 二路归并 归并操作--并集 暴力 二叉树 归并操作--元素复合 暴力 二叉树 堆维护 行分组 多路归并 归并操作--并集 归并操作--元素复合 例题 二路归并 多路归并 是 二路归并 ...
- 线性时间复杂度求数组中第K大数
求数组中第K大的数可以基于快排序思想,步骤如下: 1.随机选择一个支点 2.将比支点大的数,放到数组左边:将比支点小的数放到数组右边:将支点放到中间(属于左部分) 3.设左部分的长度为L, 当K &l ...
- c++求区间第k大数_寻找第K大的数的方法总结
今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值. 名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以 ...
- poj 2985(并查集+线段树求K大数)
解题思路:这道题并查集很容易,合并时找到父节点就直接加上去就ok了.关键是如何求K大数,我一直在想用线段树怎么写,一开始想如果直接记录数的大小那肯定是没戏了,借鉴了一下别人的思路:区间[a,b]记录的 ...
- 快速排序——寻找数组第K大数(由浅入深,四种方法对比讲解!)
寻找数组第K大数是大厂面试中经常考到的一题,有的小机灵鬼直接用sort()进行排序,两行代码解决,这样看似可行,实则掉入了出题人的陷阱.面试官希望看到的是你对算法的理解,而不是函数的调用.下面,我就以 ...
最新文章
- 哪种编程语言最适合初学者?
- 图像识别 43个模型
- 《Credit Risk Scorecard》第四章:Data Review and Project Parameters
- CUDA学习日志:常量内存和纹理内存
- 卸载mongodb_【数据库】mongodb数据库安装
- freemind在ubuntu20.04下面的安装
- 前端学习(1920)vue之电商管理系统电商系统之角色列表路由的切换
- leetcode - 746. 使用最小花费爬楼梯
- 明年3月开卖!小米11超大杯有望搭载屏下摄像头技术
- 数据结构与算法之-----栈的应用(三)
- Charles抓包工具_基本功能
- 前端后台的爱恨情仇——接口调试
- 微pe装linux系统教程,微PE工具箱增加安装Linux系统菜单
- 【雕虫小技第8篇】scratch编程技巧之源码中的图片素材资源导出!
- 华为面试题之洞穴逃生
- uni-app微信小程序模拟器运行到某一页面调试操作
- vue中引入百度地图
- Nginx+Tomcat 负载均衡+动静分离
- 三十、再问唐僧出生之迷
- springboot POST 405 错误