快速排序是一种常用的排序,比选择排序快很多。我们来探讨一下快速排序实现的思想步骤。
1.首先选定一个基准值
2.将大于基准值的元素放右边
3.将小于基准值的元素放左边
4.分别对左右子序列重复以上三步骤
举例说明:
10 20 9 15 1 8
假设选定最左边的10为基准值,我们假定有两个下标L,R
1.从右边开始,将比基准值大的放右边,小于等于的放左边。这里8比基准值10小,所以移动到左边
2.移动完R下标的时候,交替移动L下标,这里L指向了20,大于基准值10,所以移动到右边
3.现在再次交替移动下标R,得到:
因为1比基准值10小,所以有:
4.现在交替移动下标L ,得到:
此刻,L下标指向9,然后9比基准值10小,因为此刻正处于下标L,9不用往左移动,在这种情况下,需要继续将下标L往右移动,指向15,而15大于基准值10,所以放到右边
5.现在交替移动下标R, 此时L,R下标重合,这时候,就把基准值10,放到下标重合的位置,得到:
然后再对基准值左右两个子序列,重复以上步骤操作,直到序列长度为1(因为对于长度为1的序列不需要排序)。
这里用到了递归的思想,即可最终实现排序。