全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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 


相关文章: 网站app免费制作软件,能免费看各大网站视频的手机app?  建站主机是否等同于虚拟主机?  建站之星后台密码遗忘或太弱?如何重置与强化?  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  建站之星北京办公室:智能建站系统与小程序生成方案解析  建站之星如何保障用户数据免受黑客入侵?  如何通过服务器快速搭建网站?完整步骤解析  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  c++怎么用jemalloc c++替换默认内存分配器【性能】  如何在阿里云香港服务器快速搭建网站?  如何获取上海专业网站定制建站电话?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  购物网站制作公司有哪些,哪个购物网站比较好?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  ,网页ppt怎么弄成自己的ppt?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  如何在Ubuntu系统下快速搭建WordPress个人网站?  如何在万网自助建站平台快速创建网站?  c# await 一个已经完成的Task会发生什么  如何用搬瓦工VPS快速搭建个人网站?  建站之星如何助力网站排名飙升?揭秘高效技巧  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何通过建站之星自助学习解决操作问题?  如何在搬瓦工VPS快速搭建网站?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  做企业网站制作流程,企业网站制作基本流程有哪些?  北京的网站制作公司有哪些,哪个视频网站最好?  网站制作服务平台,有什么网站可以发布本地服务信息?  建站之星安装后如何配置SEO及设计样式?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  广州建站公司哪家好?十大优质服务商推荐  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  如何构建满足综合性能需求的优质建站方案?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  再谈Python中的字符串与字符编码(推荐)  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  如何配置FTP站点权限与安全设置?  如何确保FTP站点访问权限与数据传输安全?  如何快速搭建FTP站点实现文件共享?  微信推文制作网站有哪些,怎么做微信推文,急?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  如何快速上传自定义模板至建站之星?  网站制作公司排行榜,抖音怎样做个人官方网站  香港服务器选型指南:免备案配置与高效建站方案解析  免费视频制作网站,更新又快又好的免费电影网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。