快排的细节
1.mid的取值:mid = q[l + r >> 1] ,不能是mid = l + r >> 1 , q[mid]。 因为q[mid] 的值在交换q[i] q[j]的过程中是会变的,比如i正好指在mid,q[mid] = 5 , q[j] = 3 , q[j - 1] = 4 , 这时排序就会出现错误。
2.边界问题:向左取左,向右取右。l + r >> 1 , 是向下取整 ,就是向左,就取左边界j (q , l , j) , (q , j + 1 , r);l + r + 1 >> 1 , 向下取整取到右边,就取右边界i , (q , l , i - 1) , (q , i , r)。
样例
blablabla
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla