快速排序的划分方式:
注意划分后等于key的值可能在左边也可能在右边。key也不一定在中间。
int partion(int L, int R, int key)
{
--L;
++R;
for(;;)
{// 此时R指向一个比key大或者等于key的位置
do{ L++;} while(a[L] < key && L < R);
// 此时L指向一个比key大或者等于key的位置
do{ R--;} while(a[R] > key && R >=L);
if (L>= R) return R;
swap(a[L], a[R]);
}
}