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

C#核心知识回顾——21.归并排序

理解递归逻辑
        一开始不会执行sort函数的
        要先找到最小容量数组时
        才会回头递归调用Sort进行排序


基本原理
        归并 = 递归 + 合并
        数组分左右
        左右元素相比较
        一侧用完放对面
        不停放入新数组


        递归不停分
        分完再排序
        排序结束往上走
        边走边合并
        走到头顶出结果


套路写法
        两个函数
        一个基本排序规则
        一个递归平分数组


注意事项
        排序规则函数在平分数组函数
        内部return调用

 private void Start(){int[] arr = new int[] { 8, 7, 1, 5, 4, 2, 6, 3, 9 };arr = Merge(arr);for (int i = 0; i < arr.Length; i++){print(arr[i]);}}//第一步//基本排序规则//左右元素相比较//满足条件放进去//一侧用完直接放public int[] Sort(int[] left, int[] right){//新数组存放排序后的元素int[] arry = new int[left.Length + right.Length];//分隔后左右数组的索引标识int leftindex = 0;int rightindex = 0;for (int i = 0; i < arry.Length; i++){//左侧已经放完了,直接放右边的if (leftindex >= left.Length){arry[i] = right[rightindex];//已经放入一个右侧元素进入新数组//标识指向下一个rightindex++;}//右侧已经放完,直接放左边的else if(rightindex >= right.Length){arry[i] = left[leftindex];//已经放入一个左侧元素进入新数组//标识指向下一个leftindex++;}else if (left[leftindex] < right[rightindex]){arry[i] = left[leftindex];//已经放入一个左侧元素进入新数组//标识指向下一个leftindex++;}else{arry[i] = right[rightindex];//已经放入一个右侧元素进入新数组//标识指向下一个rightindex++;}}return arry;}//第二步://递归评分数组//结束条件为长度小于2public int[] Merge(int[] arry){//递归结束条件if (arry.Length < 2)return arry;//1.数组分两段int mid = arry.Length / 2;//2.初始化左右数组int[] left =new int[mid];int[] right =new int[arry.Length - mid];for (int i = 0; i < arry.Length; i++){if (i < mid){left[i] = arry[i];}else{right[i-mid] = arry[i];}}//3.递归分组再排序return Sort(Merge(left),Merge(right));} 

http://www.lryc.cn/news/109414.html

相关文章:

  • 基于netty的rpc远程调用
  • RabbitMQ输出日志配置
  • 解决一个Sqoop抽数慢的问题,yarn的ATSv2嵌入式HBASE崩溃引起
  • 为Android构建现代应用——应用导航设计
  • 聊聊 Docker 和 Dockerfile
  • element表格+表单+表单验证结合u
  • 数据库:MYSQL参数max_allowed_packet 介绍
  • 基于DiscordMidjourney API接口实现文生图
  • springboot+vue农产品特产商城销售平台_50kf2 多商家
  • 【深度学习_TensorFlow】感知机、全连接层、神经网络
  • 软件测试(功能、接口、性能、自动化)详解
  • Oracle表段中的高水位线HWM
  • 【福建事业单位-推理判断】03类别推理
  • Leetcode-每日一题【剑指 Offer 05. 替换空格】
  • zookeeper+kafka分布式消息队列集群的部署
  • VR全景旅游,智慧文旅发展新趋势!
  • 详解EMBER数据集中对PE文件提取ByteEntropyHistogram特征
  • 垃圾回收机制和常用的算法
  • 【PostgreSQL】系列之 一 schema详解(二)
  • 性能优化-react路由懒加载和组件懒加载
  • 静态网页加速器:优化性能和交付速度的 Node.js 最佳实践
  • Spring 非自定义Bean注解
  • 微信小程序:点击按钮实现数据加载(带模糊查询)
  • 2023-2029年中国烘焙工坊市场经营管理风险与未来竞争优势分析报告
  • 用Rust实现23种设计模式之适配器
  • 替换开源LDAP,西井科技用宁盾目录统一身份,为业务敏捷提供支撑
  • 靶形数独
  • C语言阶段性测试题
  • java工厂设计模式
  • idea运行web老项目