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

排序效果:

并且可以实现对数组的局部进行排序;