iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么在java 项目中使用归并排序算法
  • 291
分享到

怎么在java 项目中使用归并排序算法

java归并排序ava 2023-05-31 10:05:29 291人浏览 薄情痞子
摘要

怎么在java 项目中使用归并排序算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。归并排序     &nbs

怎么在java 项目中使用归并排序算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

归并排序

       归并排序,指的是将两个已经排序的序列合并成一个序列的操作。 

归并操作的过程如下:

  •  申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列

  •  设定两个指针,最初位置分别为两个已经排序序列的起始位置

  •  比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置

  •  重复步骤3直到某一指针到达序列尾

  •  将另一序列剩下的所有元素直接复制到合并序列尾

Java代码 

 @SuppressWarnings("unchecked") public static <T extends Comparable<? super T>> void mergeSort(T[] ts) {    // 辅助空间   T[] tempArray = (T[]) new Comparable[ts.length];    mergeSort(ts, tempArray, 0, ts.length - 1); }   private static <T extends Comparable<? super T>> void mergeSort(T[] ts, T[] tempArray, int left, int right) {    if (left < right) {      int center = (left + right) / 2;      mergeSort(ts, tempArray, left, center);      mergeSort(ts, tempArray, center + 1, right);      // 左右合并     merge(ts, tempArray, left, center + 1, right);    }  }   private static <T extends Comparable<? super T>> void merge(T[] ts, T[] tempArray, int leftPos, int rightPos, int rightEnd) {   int leftEnd = rightPos - 1;   int temPos = leftPos;   int numElements = rightEnd - leftPos + 1;    while (leftPos <= leftEnd && rightPos <= rightEnd)     //比较放到辅助空间     if (ts[leftPos].compareTo(ts[rightPos]) <= 0)       tempArray[temPos++] = ts[leftPos++];     else       tempArray[temPos++] = ts[rightPos++];    while (leftPos <= leftEnd)     tempArray[temPos++] = ts[leftPos++];    while (rightPos <= rightEnd)     tempArray[temPos++] = ts[rightPos++];    //考回原数组,此处最好用System.arraycopy优化   for (int i = 0; i < numElements; i++, rightEnd--)     ts[rightEnd] = tempArray[rightEnd]; }

 复杂度:O(n log n)

       比较操作的次数介于(n log n)/2和n log n - n + 1。 赋值操作的次数是(2nlogn)。

       归并算法的空间复杂度为:Θ(n) 

 稳定性:稳定 

扩展:

       在java中,当执行一次泛型排序时,进行一次元比较可能是昂贵的,但是移动元素则是省时间的。归并排序使用所有的流行的排序算法中最少的比较次数,因此是使用java的通用排序算中的上好的选择。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: 怎么在java 项目中使用归并排序算法

本文链接: https://www.lsjlt.com/news/224862.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在java 项目中使用归并排序算法
    怎么在java 项目中使用归并排序算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。归并排序     &nbs...
    99+
    2023-05-31
    java 归并排序 ava
  • 在java项目中实现归并排序的方法
    在java项目中实现归并排序的方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。归并排序算法:假设初始序列含有n个记录,首先将这n个记录看成n个有序的子序列,每个子序列长度为1...
    99+
    2023-05-31
    java 归并排序 ava
  • java怎么实现归并排序算法
    归并排序算法的实现步骤如下:1. 首先,实现一个归并操作函数。该函数将两个已排序的数组合并为一个新的已排序的数组。例如:```jav...
    99+
    2023-08-15
    java
  • 怎么在Java项目中实现一个堆排序算法
    怎么在Java项目中实现一个堆排序算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。堆是数据结构中的一种重要结构,了解“堆”的概念和操作,可以帮助我们快速地掌握堆排序。堆的...
    99+
    2023-05-31
    java 堆排序算法 ava
  • 利用java 怎么实现一个归并排序算法
    本篇文章给大家分享的是有关利用java 怎么实现一个归并排序算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 归并排序算法,顾名思义,是一种先分再合的算法,其算法思...
    99+
    2023-05-31
    java 归并排序算法 ava
  • 如何在java项目中实现一个插入排序算法
    如何在java项目中实现一个插入排序算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、基本概念      插入排序的基...
    99+
    2023-05-31
    java 插入排序 ava
  • 冒泡排序与二分算法如何在java 项目中实现
    冒泡排序与二分算法如何在java 项目中实现?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、冒泡算法的原理:冒泡排序算法的一般性策略:搜索整个值列,比较相邻元素,如果两者...
    99+
    2023-05-31
    java 冒泡排序 二分算法
  • 如何在Java与Python项目中实现一个冒泡排序算法
    如何在Java与Python项目中实现一个冒泡排序算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。冒泡排序可以说是在排序算法中最为入门级别的算法之一了。因为其简单易于理解...
    99+
    2023-05-31
    java 冒泡排序 python
  • unmodifiableList方法怎么在java项目中使用
    本篇文章给大家分享的是有关unmodifiableList方法怎么在java项目中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。java对象中primitive类型变量可以...
    99+
    2023-05-31
    java unmodifiablelist ava
  • 怎么在java项目中实现一个选择排序功能
    本篇文章为大家展示了怎么在java项目中实现一个选择排序功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、基本概念      每趟从待排序的记录...
    99+
    2023-05-31
    java 选择排序 ava
  • Java中常见的查找算法与排序算法怎么使用
    这篇文章主要介绍了Java中常见的查找算法与排序算法怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中常见的查找算法与排序算法怎么使用文章都会有所收获,下面我们一起来看看吧。1. 基本查找也叫做顺...
    99+
    2023-07-05
  • 怎么在C++项目中利用priority_queue自定义排序
    这篇文章给大家介绍怎么在C++项目中利用priority_queue自定义排序,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先,无论 priority_queue 中存储的是基础数据类型(int、double 等),...
    99+
    2023-06-06
  • 怎么在Java中利用TreeMap实现一个排序算法
    怎么在Java中利用TreeMap实现一个排序算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一...
    99+
    2023-05-31
    java treemap 排序算法
  • 怎么在Python中利用排序算法实现插入排序
    怎么在Python中利用排序算法实现插入排序,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、插入排序插入排序与我们平时打扑克牌非常相似,将新摸到的牌插入到已有的牌中合适的位置...
    99+
    2023-06-15
  • 怎么在java项目中实现一个海盗算法
    今天就跟大家聊聊有关怎么在java项目中实现一个海盗算法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。具体方法如下:package unit4;public cl...
    99+
    2023-05-31
    java 海盗算法 ava
  • HttpURLConnection怎么在Java项目中使用
    这篇文章将为大家详细讲解有关HttpURLConnection怎么在Java项目中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。包括使用HttpURLConnection执行get/po...
    99+
    2023-05-30
    java httpurlconnection
  • 在Java中怎么实现一个快速排序算法
    在Java中怎么实现一个快速排序算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。快速排序的原理:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序...
    99+
    2023-05-30
    java
  • 怎么在Java项目中利用QuickSort实现一个快速排序功能
    今天就跟大家聊聊有关怎么在Java项目中利用QuickSort实现一个快速排序功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。快速排序-----------------------...
    99+
    2023-05-31
    quicksort java
  • Java插入排序算法是什么及怎么使用
    本篇内容主要讲解“Java插入排序算法是什么及怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java插入排序算法是什么及怎么使用”吧!1.插入排序简介插入排序,一般也被称为直接插入排序。...
    99+
    2023-07-04
  • Hutool库怎么在Java项目中使用
    本文章向大家介绍Hutool库怎么在Java项目中使用的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。简介Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使J...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作