首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

宜宾野牛程序员讲少儿编程——快速排序(C++ 版)

宜宾野牛程序员讲少儿编程——快速排序(C++ 版)

🦬小朋友们,今天跟宜宾野牛程序员来聊聊一个超级厉害的排序算法——快速排序!它快得就像赛车一样,能在短时间内把一堆乱七八糟的数字排好序!

什么是快速排序?

快速排序,简称快排(Quicksort),是一种“分而治之”的排序方法。它的思路就像整理玩具一样:

选一个基准值(pivot),比如拿起一个玩具 说:“好,大家跟它比比大小!”

比它小的放左边,比它大的放右边,这样,玩具堆就分成了两部分。

左右两边再各自继续排序,直到所有玩具都排好为止!

这个过程就像分组比赛一样,把问题一拆二,二拆四,最后轻松解决!

快速排序是怎么工作的?

来看看野牛程序员举的一个例子,假设有这样一组数字:

要把它排成从小到大的顺序,快排会这么做:

第 1 步:选择基准值(Pivot)

野牛程序员随便选一个基准值,最常见的做法是选最后一个数作为基准值。

这里选 11 作为 pivot(基准值):

现在,所有比11小的放左边,比11大的放右边

第一个小朋友“11” 已经站在了正确的位置,它再也不会动了!

第 2 步:继续对右边的数字排序

剩下的数字25, 12, 22, 64还没排好,野牛程序员再挑一个基准值,这次选最后一个数 64

所有比64小的放左边,比64大的放右边(但是没比它大的了)

哇,64 也站对了位置!

第 3 步:继续对中间的数字排序

现在,剩下的 25, 12, 22 还没排好,野牛程序员再来一次!

选最后一个数 22 作为 pivot

小于22的放左边,大于22的放右边:

太棒了,22 也站对了位置!

第 4 步:剩下的 12 和 25 还没排序

但是,12和25只剩两个数了,它们已经是正确的顺序了:

完美!所有数字都站对了队伍,排序完成!

C++ 代码实现

快排的代码其实并不难!来看看 C++ 版本的实现吧:

🧐 为什么快排这么快?

快排利用分而治之的思想,每次把问题分成两半,快速缩小问题的规模。

最优情况:每次刚好平分,时间复杂度O(n log n),非常快!

最坏情况:如果每次选的 pivot 都是最大或最小,快排可能会退化成O(n²),但优化后可以避免!

野牛程序员:小朋友们学到了什么?

快速排序是一种“分而治之”的排序方法

选一个基准值,把小的放左边,大的放右边

递归地对左右两部分排序

它非常快,适用于大规模数据排序!

小朋友们,快去试试用 C++ 代码自己实现快速排序吧!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OBdSDxYlfg6ZD0pXRKdRXHQQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券