本文最后更新于41 天前,其中的信息可能已经过时,如有错误请发送邮件到zhangweihao22@outlook.com
元素:数组、指针、循环
快排代码:
void quick_sort(int q[], int l, int r)
{
if (l >= r) return;//判断数组的长度是否有效
//下面q[l + r >> 1]中“>>”是“ 位运算符 ”
int i = l - 1, j = r + 1, x = q[l + r >> 1];
while (i < j)
{
do i ++ ; while (q[i] < x);
do j -- ; while (q[j] > x);
if (i < j) swap(q[i], q[j]);
}
quick_sort(q, l, j), quick_sort(q, j + 1, r);
}
链接:位运算符
在编程中,
>>
是一个位运算符,表示“右移”。当你对一个数进行右移操作时,你会将这个数的二进制表示向右移动指定的位数。对于整数来说,右移操作通常有两种形式:
- 逻辑右移(无符号右移):在移动过程中,左边空出的位会被填充为0。
- 算术右移(有符号右移):在移动过程中,左边空出的位会被填充为符号位(即正数填充0,负数填充1)。
在此代码片段
x = q[l + r >> 1]
中,l + r >> 1
表示先计算l + r
的和,然后将这个和向右移动1位。这通常用于计算两个数的平均值,因为右移1位相当于除以2。例如,如果l
是3(二进制为11
),r
是5(二进制为101
),那么l + r
就是8(二进制为1000
),右移1位后就变成了4(二进制为100
)。请注意,这种位运算方法计算的平均值是向下取整的,也就是说,它不会包含小数部分。