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

归并排序的基础归并算法

将两个有序的数组归并成一个更大的有序数组。根据这个操作发明了一种简单的递归排序算法:归并排序。要将一个数组排序,可以先(递归地)将它分成两半分别排序。

今天,我们先实现这个算法的最基础部分,就是把一个数组的两个已排好序的部分合并,方法名为merge 参数有a为数组int [],lo,mid,hi,通过这个方法将a[lo,mid]和a[mid+1,hi]合并到a[lo,hi]中

我们可以这样:
初始化两个指针i=lo, j=mid+1。
然后for循环从0到temp数组的长度-1,在循环体内:
如果左子数组已经全部合并(i>mid),那么当前元素取右子数组的j位置,j++。
如果右子数组已经全部合并(j>hi),那么当前元素取左子数组的i位置,i++。
如果都没有,则比较a[i]和a[j],将较小的放入数组,并移动相应的指针。

具体处理过程可以先复制数组至临时数组,再比对放入目标数组中;也可以把处理结果方入临时数组,最后再复制进目标数组,时间和空间没有区别。下面按第一种设想处理,详见代码

public class MergeSort {public static void merge(int [] ints,int lo,int mid,int hi){int i = lo;int j = mid + 1;//先复制int [] temp = new int[ints.length];for(int k = lo;k <= hi;k++){temp[k] = ints[k];}//再处理for (int k = lo; k <= hi; k++) {if (i > mid) {// 左子数组已全部处理完,直接复制右子数组ints[k] = temp[j++];} else if (j > hi) {// 右子数组已全部处理完,直接复制左子数组ints[k] = temp[i++];} else if (temp[i] <= temp[j]) {// 左子数组元素较小或相等ints[k] = temp[i++];} else {// 右子数组元素较小ints[k] = temp[j++];}}}public static void main(String [] args){int [] a = {1,3,5,2,4,6};merge(a,0,2,5);for(int outprint : a){System.out.print(outprint + " ");}}
}

http://www.dtcms.com/a/593709.html

相关文章:

  • 深入浅出蓝桥杯:算法基础概念与实战应用(二)基础算法(下)
  • 网站建站工具网站建设与管理 市场分析
  • 《WebPages 类:深入解析网页元素管理工具》
  • 网站系统发生错误今天的三个新闻
  • 雷池 WAF 免费版深度体验:站长用 Nginx 搭环境,护住 WordPress 博客
  • 无缝对接与数据驱动:护照MRZ识别技术在智慧景区管理中的深度应用
  • 网站建设后续需要维护住房和城乡建设部贰级建造师网站
  • 交友视频网站建设广告策划书范本
  • spring boot集成 RustFS服务
  • 谷歌攻克AI“灾难性遗忘“难题!最新范式突破AI持续学习内存瓶颈
  • SuperMap GIS基础产品FAQ集锦(20251110)
  • Kimi K2 Thinking 量化之后再量化,模型文件缩水60%,准确率85%,部署教程来了
  • 【图像处理基石】边缘检测技术:从经典算法到实战应用
  • DevEco Studio 鸿蒙HarmonyOS 引入本地har
  • 【路径算法】IDA*与D*和Lite D* 的比较及IDA*算法详解
  • 做网站运营这工作怎么样wordpress 星 评分
  • 单一职责原则(SRP)深度解析
  • 网站建设福州公司南县网站设计
  • ESD防护设计宝典(二十八):半导体的ESD失效模式与机理
  • 关于止盈和止损的问题(一)
  • LeetCode 分类刷题:141. 环形链表
  • 在哪个网站做视频赚钱的亚马逊计划裁员1万人
  • 建材建设行业网站做网站从何开始
  • leetcode 3542
  • 【Python Maze Diary 1.1】迷宫算法术语
  • 大学计算机基础(Windows 7+Office 2010)第一章课后练习
  • PyTorch中int32和int64在性能上有什么差异
  • 机器学习入门:从零开始理解AI的核心引擎(附Python实战)
  • 【AI学习-comfyUI学习-简易加载器工作流(文生图)-各个部分学习-第七节-2】
  • 西安建设高端网站外星人建设的网站