目录:
- 一、快排方法
- 二、代码美图
一、快排方法
4 | 5 | 2 | 10 | 6 | 3 | 9 | 8 | 1 | 7 |
首先对上面的数字进行快速排序。暂时定为数组a[10]。
一、
先在这个序列中随便找一个数作为基准数,通常选第一个数作为基准数叫他为Key吧,上面的4就是Key。(基准数的目的就是把比Key小的数放到Key的左边,把比Key大的数放到Key的右边。)
<4 | 4 | >4 |
二、
| 4 | 5 | 2 | 10 | 6 | 3 | 9 | 8 | 1 | 7 |
i 作为基准数的下标,j 作为最右边数字的下标(看成一个数组)。j 向左边移动直到找到比Key(基准数)小的数(好交换到前面去)。然后i 就向右边移动直到找到比Key(基准数)大的数。(好交换到后面去)。
移动期间,j 要一直在i 的右边。i 要一直在j 的左边。(j>i),i和j遇到时就停下来。
4 | 5 | 2 | 10 | 6 | 3 | 9 | 8 | 1 | 7 |
这个时候5和1就交换。
然后继续循环①的操作
4 | 1 | 2 | 10 | 6 | 3 | 9 | 8 | 5 | 7 |
i | j |
4 | 1 | 2 | 3 | 6 | 10 | 9 | 8 | 5 | 7 |
i | j |
这个时候10和3就交换。
这个时候j继续向左边移动,到6时,6比4大要不得,还要望左边冲冲冲。到3下面时,j和i就碰到了。j就不可以移动了。然后i和j碰到对应的数字3就要和Key(基准数) 4 交换。
4 | 1 | 2 | 3 | 6 | 10 | 9 | 8 | 5 | 7 |
i,j |
最后就成这样了
3 | 1 | 2 | 4 | 6 | 10 | 9 | 8 | 5 | 7 |
三,进行递归。(Key(4)就把一个数组分成了2个数组了)。
就是把3,1,2看成一个数组重复上面的操作。
把6,10,9,8,5,7看成一个数组重复上面的操作。
最后就会变成
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
二、代码美图 (是c语言实现的,JavaScript后续会补上)