public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = { 3, 11, 23, 10, 9, 111, 298, 90, 190, 19 };
mergeSort(arr);
for (int i = 0; i < arr.length; i++)
System.out.println(arr[i] + " ");
}
public static void mergeSort(int[] list) {
if (list.length > 1) {
int[] firstHalf = new int[list.length / 2];
System.arraycopy(list, 0, firstHalf, 0, list.length / 2);
mergeSort(firstHalf);
int secondHalfLength = list.length - list.length / 2;
int[] secondHalf = new int[secondHalfLength];
System.arraycopy(list, list.length / 2, secondHalf, 0, secondHalfLength);
mergeSort(secondHalf);
int[] temp = merge(firstHalf, secondHalf);
System.arraycopy(temp, 0, list, 0, temp.length);
}
}
public static int[] merge(int[] listA, int[] listB) {
int[] temp = new int[listA.length + listB.length];
int currentListA = 0;
int currentListB = 0;
int currentTemp = 0;
while (currentListA < listA.length && currentListB < listB.length) {
if (listA[currentListA] < listB[currentListB])
temp[currentTemp++] = listA[currentListA++];
else
temp[currentTemp++] = listB[currentListB++];
}
while (currentListA < listA.length)
temp[currentTemp++] = listA[currentListA++];
while (currentListB < listB.length)
temp[currentTemp++] = listB[currentListB++];
return temp;
}
}
mergesort
最新推荐文章于 2022-01-28 13:00:27 发布