“野牛程序员·少儿编程算法启蒙课”之——快速排序,像忍者一样分身排序!
什么是快速排序?
快速排序,全名:快得很的排序(开玩笑)
它是一种“分而治之”的策略,像切蛋糕一样,把数据一切再切,左边的比中间这个小,右边的比中间这个大,然后——递归地各自再去切!
就像一个忍者,把一堆人分成左边(低年级),右边(高年级),然后左边自己再分,右边也自己再分……最后自动就排好了队!
举个例子来理解:
假设有这样一组数字:
[7, 3, 9, 4, 6, 2]
Step 1:选一个“基准值”(pivot)
比如选第一个:7
Step 2:把比 7 小的放左边,比 7 大的放右边:
[3, 4, 6, 2](左边)7[9](右边)
Step 3:左边[3, 4, 6, 2]再来一次快速排序!选 3:
[2]3[4, 6]
继续拆下去……
最后就拼起来啦:
[2, 3, 4, 6] + 7 + [9] 排好了!
🧑 C++ 代码来了:
快速排序的亮点:
平均时间复杂度是 O(n log n),比冒泡、选择、插入快多了
思维训练非常棒,能让孩子理解“递归”、“分治”这些计算机里超重要的概念
排序速度快到像忍者一样,一刀两断!
🧠 小贴士(写给小朋友):
快速排序不是看谁速度快,而是分组分得妙!
每次都找个“中间人”(pivot)当小组长
小组长左边的都比它小,右边的都比它大
然后大家继续自己选小组长,分分分!
🧡 小小挑战题:
动手把[10, 7, 8, 9, 1, 5]用快速排序排一排~
写代码前,先在纸上模拟一遍,看看分成了哪几组,最后拼成啥样?
野牛程序员教少儿编程与信息学奥赛
宜宾市野牛网络科技有限公司专业微信小程序开发、网站建设、软件开发等
领取专属 10元无门槛券
私享最新 技术干货