Scratch之十大经典排序算法-快速排序

Posted 小哈带你玩儿编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scratch之十大经典排序算法-快速排序相关的知识,希望对你有一定的参考价值。

算法概述

快速排序

基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列


 算法复杂度

Scratch之十大经典排序算法-快速排序

相关概念

  • 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。

  • 不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。

  • 时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。

  • 空间复杂度:是指算法在计算机

内执行时所需存储空间的度量,它也是数据规模n的函数。 


效果图

第一轮,无递归

Scratch之十大经典排序算法-快速排序

点击绿旗随机初始化小猫的颜色,然后点击 “舞台” 对颜色进行快速排序,我这里设置的颜色规则是 红>蓝>绿>黄。最上方的小猫是用于存储标杆值的小猫。从后往前找的过程中该小猫会跳起(上移),从前往后找,会将该小猫往下移动。待插入的小猫会保持上移(或下移)状态一段时间,这样可以更直观的看出是哪两只小猫在进行替换(同时还搭配了不同的音效),以及具体发生交换的位置在哪里。


合并所有序列,即有递归的过程


Scratch之十大经典排序算法-快速排序

普通角色的代码块:

Scratch之十大经典排序算法-快速排序

存储标杆值的代码块:

舞台的代码块:


以上是关于Scratch之十大经典排序算法-快速排序的主要内容,如果未能解决你的问题,请参考以下文章

Scratch十大经典排序算法之选择排序

十大经典排序算法总结(快速排序)

吴裕雄--天生自然数据结构:十大经典排序算法——快速排序

用JavaScript实现十大经典排序算法--快速排序

用JavaScript实现十大经典排序算法--快速排序

用 Python 实现十大经典排序算法