
快速排序演示
快速排序演示

0,10,11,5,6,15,14,15,16,14,0,8
0,10,11,5,6,15,14,15,16,14,0,8
,17
,17
•
思路
思路
:
:
每一次都是以序列的中间元素为主元
每一次都是以序列的中间元素为主元
.
.
•
一
一
,
,
将它放在数组首位
将它放在数组首位
,
,
即与首元素互换
即与首元素互换
.
.
•
二
二
,
,
用一个
用一个
last
last
下标记下比所有比主元少的最后
下标记下比所有比主元少的最后
的一个元素
的一个元素
,
,
向后比
向后比
,
,
遇比主元少的就要放到前面
遇比主元少的就要放到前面
去
去
,last
,last
总是指向比主元少的最后元素下标
总是指向比主元少的最后元素下标
.
.
•
最后
最后
,
,
把主元放到比它少的所有元素之后
把主元放到比它少的所有元素之后
,
,
即与
即与
la
la
st
st
指向的元素互换即可
指向的元素互换即可
.
.
再将
再将
left
left
到
到
last-1
last-1
和
和
last
last
+1
+1
到
到
right
right
调用此过程
调用此过程
!
!

0
0
,10,11,5,6,15,
,10,11,5,6,15,
14
14
,15,16,14,0,8
,15,16,14,0,8
,17
,17
•
把中间的元素放到首位
把中间的元素放到首位
!
!

14
14
,10,11,5,6,15,
,10,11,5,6,15,
0
0
,15,16,14,0,8
,15,16,14,0,8
,17
,17

14
14
,10,11,5,6,15,
,10,11,5,6,15,
0
0
,15,16,14,0,8
,15,16,14,0,8
,17
,17
left right
last