C++排序算法之快速排序
思路 如下图所示,对于数组s={11,18,20,11,6,8},选择11作为关键字key,然后选择两个哨兵low和high分别从数组的首部和尾部出发,执行以下操作: 循环判断尾部哨兵所在元素是否大于key,且low<high,若是则哨兵high–,循环继续;否则循环停止,执行s[low]=s[high],然后转到2。 循环判断首部哨兵所在元素是否小于或等于key,且low<high,若是则哨兵low++,循环继续;否则循环停止,执行s[high]=s[low],然后转到3。 若low>=high,循环停止,否则转到1。 C++实现 int partion ( vector < int > & s , int low , int high ) { int key = s [ low ] ; while ( low < high ) { while ( low < high && s [ high ] > key ) high -- ; s [ low ] = s [ high ] ; while ( low < high && s [ low ] <= key ) low ++ ; s [ high ] = s [ low ] ; } s [ low ] = key ; return low ; } void quickSort ( vector < int > & s , int