给一个数组arr和一个数字num,小于num放在左边,等于num的放在中间,大于num的放在右边
void *partition(int *arr, int L, int R, int num)
{
int less = L - 1;
int more = R + 1;
int cur = L;
while(cur < more){
if(arr[cur] < num)
swap(arr, ++less, cur ++);//当前数和less下一个位置作交换(即小于区域扩一个位置),然后cur跳到下一个位置
else if(arr[cur] > num)
swap(arr, -- more, cur);//大于区域的前一个位置和当前数交换,当前数不变
else
cur ++;
}
}