java 基本算法之归并排序实例代码

发布时间 - 2026-01-11 00:57:41    点击率:

java 基本算法之归并排序实例代码

原理:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,

     * 即把待排序序列分为若干个子序列,每个子序列是有序的。
     * 然后再把有序子序列合并为整体有序序列。

实例代码:

public class MergeSort {

  /**
   * 
   *
   *
   * @param args
   */
  public static void main(String[] args) {
    int a[] = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62,
        99, 98, 54, 56, 17, 18, 23, 34, 15, 35, 25, 53, 51 };

    sort(a, 0, a.length - 1);
    System.out.println(Arrays.toString(a));

  }

  public static void sort(int[] data, int left, int right) {
    if (left < right) {
      // 找出中间索引
      int center = (left + right) / 2;
      // 对左边数组进行递归
      sort(data, left, center);
      // 对右边数组进行递归
      sort(data, center + 1, right);
      // 合并
      merge(data, left, center, right);
    }

  }

  public static void merge(int[] data, int left, int center, int right) {
    int[] tmpArr = new int[data.length];
    int mid = center + 1;
    // third记录中间数组的索引
    int third = left;
    int tmp = left;
    while (left <= center && mid <= right) {
      // 从两个数组中取出最小的放入中间数组
      if (data[left] <= data[mid]) {
        tmpArr[third++] = data[left++];
      } else {
        tmpArr[third++] = data[mid++];
      }

    }

    // 剩余部分依次放入中间数组
    while (left <= center) {
      tmpArr[third++] = data[left++];
    }
    while (mid <= right) {
      tmpArr[third++] = data[mid++];
    }

    // 将中间数组中的内容复制回原数组
    while (tmp <= right) {
      data[tmp] = tmpArr[tmp++];
    }
    System.out.println(Arrays.toString(data));
  }

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # 基本算法之归并排序  # 归并排序  # java数据结构排序算法之归并排序详解  # Java经典排序算法之归并排序详解  # 深入探究TimSort对归并排序算法的优化及Java实现  # 归并排序的原理及java代码实现  # java实现归并排序算法  # java二路归并排序示例分享  # java 归并排序的实例详解  # 递归  # 希望能  # 谢谢大家  # 并为  # 再把  # 中取  # 组中  # 即把  # int  # String  # main  # void  # static  # 法是将  # br  # nbsp  # strong  # Merge  # pre 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python并发异常传播_错误处理解析【教程】  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  用yum安装MySQLdb模块的步骤方法  jQuery validate插件功能与用法详解  Laravel如何创建自定义中间件?(Middleware代码示例)  ,网页ppt怎么弄成自己的ppt?  实例解析angularjs的filter过滤器  Laravel如何保护应用免受CSRF攻击?(原理和示例)  如何在阿里云高效完成企业建站全流程?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  php485函数参数是什么意思_php485各参数详细说明【介绍】  如何快速搭建虚拟主机网站?新手必看指南  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Android实现代码画虚线边框背景效果  如何在景安服务器上快速搭建个人网站?  javascript如何操作浏览器历史记录_怎样实现无刷新导航  香港服务器WordPress建站指南:SEO优化与高效部署策略  成都网站制作公司哪家好,四川省职工服务网是做什么用?  Firefox Developer Edition开发者版本入口  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  如何用狗爹虚拟主机快速搭建网站?  微信小程序 require机制详解及实例代码  如何在IIS7中新建站点?详细步骤解析  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  手机网站制作与建设方案,手机网站如何建设?  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  如何正确下载安装西数主机建站助手?  如何在IIS服务器上快速部署高效网站?  如何在Windows虚拟主机上快速搭建网站?  如何快速上传建站程序避免常见错误?  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  javascript中对象的定义、使用以及对象和原型链操作小结  如何在搬瓦工VPS快速搭建网站?  郑州企业网站制作公司,郑州招聘网站有哪些?  中国移动官方网站首页入口 中国移动官网网页登录  如何续费美橙建站之星域名及服务?  非常酷的网站设计制作软件,酷培ai教育官方网站?  Laravel如何使用Gate和Policy进行授权?(权限控制)  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  如何快速搭建高效香港服务器网站?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  LinuxCD持续部署教程_自动发布与回滚机制  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  如何有效防御Web建站篡改攻击?  如何在万网ECS上快速搭建专属网站?  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  PHP 500报错的快速解决方法  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康