【发布时间】:2019-10-05 02:15:00
【问题描述】:
我从另一个应该可以工作的 Stackoverflow 问题中实现了这个算法:Sorting (names) using Merge Sort
到目前为止,这是我得到的输出: Apfel Apfel Banane Limone Banane
public class TestMergesort {
public static void main(String[] args) {
String[] fruechte = new String[]{"Orange","Apfel","Zitrone","Limone","Banane"};
Mergesorttwo.mergeSort(fruechte);
for (int i = 0;i<fruechte.length;i++)
System.out.print(fruechte[i]+"\t");
}
}
public class Mergesorttwo {
public static void mergeSort(String[] arr) {
if (arr.length > 1) {
String[] left = new String[arr.length / 2];
String[] right = new String[arr.length - arr.length / 2];
for (int i = 0; i < left.length; i++) {
left[i] = arr[i];
}
for (int i = 0; i < right.length; i++) {
right[i] = arr[i + arr.length / 2];
}
mergeSort(left);
mergeSort(right);
merge(arr, left, right);
}
}
public static void merge(String[] arr, String[] left, String[] right){
int l = 0;
int r = 0;
for (int i = 0; i < arr.length; i++) {
if (l < right.length && r < left.length) {
if (r>= right.length || (l < left.length &&left[l].compareTo(right[r]) <= 0)) arr[i] = left[l++];
else arr[i] = right[r++];;
}
}
}
}
【问题讨论】:
-
你有什么问题?
标签: java array-merge