Skip to content

Commit 7fffb4e

Browse files
authored
Update 6.quickSort.md
1 parent f8bf649 commit 7fffb4e

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

6.quickSort.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@
2121

2222
递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。
2323

24+
下面给出一个示例:
25+
假设有数据6 1 2 7 9 3 4 5 10 8
26+
首先用6当作基准,使用i j两个指针分别从两边进行扫描,把比6小的元素和比6大的元素分开。
27+
取出6那么就留个坑变成:_ 1 2 7 9 3 4 5 10 8
28+
从右边(j)开始,一步步向左移,找到比6小的数;这个数为5,将5放置到坑中,留下新的坑:5 1 2 7 9 3 4 _(j) 10 8
29+
然后从左边(i)一步步向右移,找到比6大的数,这个数为7,将7放置到坑中,留下新的坑:5 1 2 _(i) 9 3 4 7(j) 10 8。其实这两步就是将5和7互换。
30+
然后j继续右移找到比6小的数4,i左移动找到比6大的数9,然后互换,依次变成:5 1 2 4(i) 9 3 _(j) 7 10 8 和 5 1 2 4 _(i) 3 9(j) 7 10 8
31+
然后j继续右移,发现3<6,然后3填坑,留下新的坑:5 1 2 4 3(i) _(j) 9 7 10 8
32+
然后i继续左移,发现i=j,此时把基准6填在碰头的位置5 1 2 4 3 6(i)(j) 9 7 10 8
33+
此时我们已经将原来的序列,以 6 为分界点拆分成了两个序列,左边的序列是“5 1 2 4 3”,右边的序列是“ 9 7 10 8 ”然后递归左边和右边。
2434

2535
## 2. 动图演示
2636

0 commit comments

Comments
 (0)