分治递归时:
以i为索引
quick_sort(l,i-1);
quick_sort(i,r);
则每次的分界应该取(l + r + 1) >> 1;
以j为索引
quick_sort(l,j);
quick_sort(j+1,r);
则每次的分界应该取(l + r) >> 1;
取中间为分界的目的:数据范围为1e5时,若数组本是有序的,取边界q[l]或者q[r],快排都会退化成o(n²)。
为啥用i索引时不能以(l+r)>>1为分界 大佬