【搞定算法】BFPRT 算法、快排解决第 k 大数问题

   日期:2024-12-25     作者:czdytfhm4       评论:0    移动:http://w.yusign.com/mobile/news/4281.html
核心提示:博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl_Java 一起交流秋招面试经验。目 录: 方法1:暴

博主秋招提前批已拿百度、字节跳动、拼多多、顺丰等公司的offer,可加微信:pcwl_Java  一起交流秋招面试经验。

目  录:

方法1:暴力解法

方法2:快排实现【笔试版+面试版】

方法3:BFPRT 算法实现【面试优化版】


问题:求一个数组中的第 k 小 / 大的数。

说明:这道题求解不难,主要的目的是为了引出 快排算法的应用(partiotion)和 BFPRT 算法

 其实我们很容易想到先将这个数组排好序,再直接取出数组中下标为 k - 1 的数即可。


快速排序将比关键字大的元素从前面移动到后面,比关键字小的元素从后面直接移动到前面,从而减少了总的比较次数和移动次数,同时采用”分而治之“的思想,把大的拆分为小的,小的再拆分为更小的,其原理如下:通过一趟排序将待排序的数组分成两个部分,其中一部分记录的是比关键字更小的,另一部分是比关键字更大的,然后再分别对着两部分继续进行排序,直到整个序列有序;

步骤:代码也很容易理解,其实就是一个“填坑”的过程,

1、第一个“坑”挖在每次排序的第一个位置 arr[low],从序列后面往前找第一个比 pivot 小的数来把这个“坑”填上,这时候的“坑”就变成了当前的 arr[high];

2、然后再从序列前面往后用第一个比 pivot 大的数把刚才的“坑”填上;

     本文地址:http://w.yusign.com/news/4281.html    述古往 http://w.yusign.com/static/ , 查看更多
 
特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

举报收藏 0打赏 0评论 0
 
更多>同类资讯
0相关评论

相关文章
最新文章
推荐文章
推荐图文
资讯
点击排行
{
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号