当前位置: 首页 > article >正文

l + r >> 1; 的含义

void merge_sort(int q[],int l,int r){
    
    //递归的终止情况
    if(l>=r)return;
    
    //第一步:分成子问题
    int mid = l+r>>1;
    
    //第二步:递归处理子问题
    merge_sort(q, l, mid),  merge_sort(q, mid+1, r);
 
    //第三步:合并子问题
    int k = 0, i = l, j = mid+1;
    while( i<=mid && j<=r )
        if(q[i] <= q[j])  tmp[k++] = q[i++];
        else  tmp[k++] = q[j++];
    while(i <= mid) tmp[k++] = q[i++];
    while(j <= r) tmp[k++] = q[j++];
    
    for( i=l,j=0; i<=r;  i++,j++ ) q[i]=tmp[j];
}
 

上述归并排序模板代码中int mid =  l + r  >> 1;  的含义:

int mid = (l + r) >> 1;  是指l+r的值右移一位,
也就相当于l+r的值除以2取整,即(l+r)/2。

>>是移位运算符
x>>1相当于x除以2
x>>N相当于x除以(2的N次方)


 


http://www.kler.cn/a/232456.html

相关文章:

  • 《FreeRTOS任务控制块篇》
  • 网络技术-网桥模式
  • LeetCode题解:5.最长回文子串【Python题解超详细,中心拓展、动态规划、暴力解法】
  • 【WRF理论第十二期】输出文件:wrfout 和 wrfrst
  • Gartner发布安全平台创新洞察:安全平台需具备的11项常见服务
  • C++ 并发专题 - 自旋锁的实现(Spinlock)
  • 10分钟快速入门正则表达式
  • 100天精通Python(实用脚本篇)——第115天:基于selenium实现反反爬策略之隐藏浏览器指纹特征
  • 排序(2)(希尔排序)
  • RibbonOpenFeign源码(待完善)
  • C语言操作符超详细总结
  • 第十六篇【传奇开心果系列】Python的OpenCV库技术点案例示例:图像质量评估
  • 前端框架学习 Vue(3)vue生命周期,钩子函数,工程化开发脚手架CLI,组件化开发,组件分类
  • Git分支常用指令
  • LabVIEW多任务实时测控系统
  • 书生·浦语大模型第二课作业
  • 基于Linux的HTTP代理服务器搭建与配置实战
  • Gitlab和Jenkins集成 实现CI (三)
  • (力扣)1314.矩阵区域和
  • 【stomp实战】websocket原理解析与简单使用
  • 机器学习7-K-近邻算法(K-NN)
  • SQL笔记-2024/01/31
  • 前后端通讯:前端调用后端接口的五种方式,优劣势和场景
  • 查大数据检测到风险等级太高是怎么回事?
  • 单片机的省电模式及策略
  • 自动驾驶稳步迈向商业化应用