一、规则
- 选基数(随机选择列表中的任意一个数,没有规律)
- 大于基数的放在右边,小于基数的放在左边。
- 基数 左/右 边重复上边两条规则
比较前 | 72 | 73 | 71 | 23 | 94 | 16 | 5 |
---|---|---|---|---|---|---|---|
指针 | L | R |
下面我将一步一步演示如何排序
- 随机选一个基数,这里我选择第一个72,定义两个指针,基数选了左侧,所以我们先从右侧指针开始比较。
方法一:R 的数字大于基,L的数字小于基。否则就需要将数字交换到另一个指针下。
方法二:数字交换一次后,L、R 比较也要跟着交换。
方法三:交换后,交换的下标向中间挪一格(L下标+1,R下标-1)。
方法四:当L和R的位置重叠之后,将基数放置在重叠的位置。
方法五:一轮排序后,新数组基数的左侧和右侧按照以上步骤,分别进行排序,直到排序的数组长度小于 2。
比较前 | 72 | 73 | 71 | 23 | 94 | 16 | 5 |
---|---|---|---|---|---|---|---|
示例 | L | R | |||||
比较后 | 5 | ||||||
指针 | L | R | |||||
比较后 | 5 | 73 | |||||
指针 | L | R | |||||
比较后 | 5 | 16 | 73 | ||||
指针 | L | R | |||||
比较后 | 5 | 16 | 71 | 73 | |||
指针 | L | R | |||||
比较后 | 5 | 16 | 71 | 23 | 73 | ||
指针 | LR | ||||||
比较后 | 5 | 16 | 71 | 23 | 94 | 73 | |
指针 | LR | ||||||
比较后 | 5 | 16 | 71 | 23 | 72 | 94 | 73 |