“快排”相对于冒泡,选择等排序方法,在处理大量无序数据的时候速度更快,并且不占用额外空间;少量数据的话冒泡,选择更容易实现;
实现原理:此次使用的是递归的方法实现的;不熟悉递归的可以看我之前写过的一篇汉诺塔的例子:
汉诺塔-SCL
步骤: 在待排序数组中选取任意数字(此处默认选择了第一个数字),统计小于选取数字的数量,然后把被选取数字和对应数量的位置做交换(比如小于选取数字的数量是5,数组下标从0开始,那么就把被选取数字和第5个数字进行交换),这样 就拍好了选取数组的位置,然后把选取数字的左右2边数字当成2个新的数组进行排序;当新的数组左边是0 或者1 个元素数组的情况下,则不做处理;若是2个元素的数组,就直接比较大小,判断是否要交换位置;若是大于2个元素的数组,则重复上面的整个过程;
完整的TIA SCL 程序如下:
排序效果:
并且可以实现对数组的局部进行排序;