📄 mergesort.java
字号:
package Strategy;
import java.lang.Comparable;
public class Mergesort extends SortStrategy
{
private static void mergeSort(Comparable [] a,Comparable [] tmpArray,int left,int right)
{
if(left < right)
{
int center = (left + right)/2;
mergeSort(a,tmpArray,left,center);
mergeSort(a,tmpArray,center+1,right);
merge(a,tmpArray,left,center+1,right);
}
}
public static void merge(Comparable [] a,Comparable [] tmpArray,int leftPos,int rightPos,int rightEnd )
{
int leftEnd = rightPos - 1;
int tmpPos = leftPos;
int numElements = rightPos - leftPos + 1;
while(leftPos <= leftEnd && rightPos <= rightEnd)
if(a[leftPos].compareTo(a[rightPos]) <= 0)
tmpArray[tmpPos++] = a[leftPos ++];
else
tmpArray[tmpPos++] = a[rightPos ++];
while(leftPos <= leftEnd)
tmpArray[tmpPos ++] = a[leftPos ++];
while(rightPos <= rightEnd)
tmpArray[tmpPos ++] = a[rightPos ++];
for(int i=0;i < numElements;i++,rightEnd --)
a[rightEnd] = tmpArray[rightEnd];
}
public void sort(Comparable [] a)
{
Comparable [] tmpArray = new Comparable[a.length];
mergeSort(a,tmpArray,0,a.length-1);
printInfor("Mergesort");
printArray(a);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -