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

  介绍

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

<强>归并排序

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

归并操作的过程如下:

<李>

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

<李>

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

<李>

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

<李>

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

<李>

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

Java代码,

/* *,   ,*归并排序,   *大敌;   ,* @param  ts    ,*/@SuppressWarnings (“unchecked"),   public  static  & lt; T  extends  Comparable<?, super  T>祝辞,void 归并排序(T [], ts), {,   ,//才能,辅助空间,   T[],才能tempArray =, (T []), new 可比[ts.length];,   ,   归并排序才能(ts, tempArray,, 0,, ts.length 作用;1),,   },   ,/* *,   ,*递归,   ,*/private  static  & lt; T  extends  Comparable<?, super  T>祝辞,void 归并排序(T [], ts, T [], tempArray,, int 左,int 右),{,   ,   if 才能;(left  & lt;,右),{,   ,   ,,,int  center =,(时间+ left 右),/,2,,   ,   ,,,归并排序(ts, tempArray,,,,中心),,   ,   ,,,归并排序(ts, tempArray,, center  +, 1,右),,   ,   ,,,//,左右合并,   ,,,合并(ts, tempArray,,,, center  +, 1,右),,   ,   ,,},   ,   },   ,/* *,   ,*合并,   ,*/private  static  & lt; T  extends  Comparable<?, super  T>祝辞,void 合并(T [], ts, T [], tempArray,, int  leftPos,, int  rightPos,, int  rightEnd), {,   int 才能;leftEnd =, rightPos 作用;1;,   int 才能;temPos =, leftPos;,   int 才能;numElements =, rightEnd 作用;leftPos  +, 1,,   ,   while 才能;(leftPos  & lt;=, leftEnd ,,, rightPos  & lt;=, rightEnd),   ,,,//比较放到辅助空间,   ,,,if  (ts (leftPos) .compareTo (ts [rightPos]), & lt;=, 0),   ,,,,,tempArray节奏(+ +),=,ts (leftPos + +),,   ,,,else    ,,,,,tempArray节奏(+ +),=,ts (rightPos + +),,   ,   while 才能;(leftPos  & lt;=, leftEnd),   ,,,tempArray节奏(+ +),=,ts (leftPos + +),,   ,   while 才能;(rightPos  & lt;=, rightEnd),   ,,,tempArray节奏(+ +),=,ts (rightPos + +),,   ,//才能考回原数组,此处最好用System.arraycopy优化,   for 才能;(int 小姐:=,0;,小姐:& lt;, numElements;,我+ +,rightEnd——),   ,,,ts (rightEnd),=, tempArray [rightEnd];,   }

<>强,复杂度:O (n log n)

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

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

<强>,稳定性:稳定,

<强>扩展:

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

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

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