快速排序(C++版)-快排选择第K大的数

目录

  • 排序思路
  • 代码实现
  • QuickSelect算法实现

1. 排序思路

快速排序主要体现的是一种分治的思想,每次将待排序列表用中轴元素将列表拆分两部分,前面部分是小于中轴元素,后面部分大于中轴元素。然后分别对中轴的前面部分和后面部分再次进行划分,直至整个列表都有序。

2. 代码实现

版本1

在这里插入图片描述

版本 2

对于partition功能,第二种版只需要关注一部分,将一部分划分好,另一部分就会自动划分好。比如说只把小于中轴的元素放在前面,然后大于中轴元素的部分就会自动归于后面那部分。
在这里插入图片描述

3. QuickSelect算法

利用快排的思想,可以从大量数据中选出第k大(小)的数据。常规思路可以先排序再取数,不过在大量数据的情况不必对所有的数据进行排序,只需要判断k在中轴的哪部分,然后再去响应部分排序就可以了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值