我正在Java中實現mergesort。我希望它能夠與可比較的每個對象一起工作。在方法中創建與ArrayList參數相同的ArrayList參數
這裏的代碼
public class MergeSort
{
public static void sort(ArrayList<? extends Comparable> list)
{
mergesort(list, 0, list.size() - 1);
}
private static void mergesort(ArrayList<? extends Comparable> list, int start, int end)
{
if (start >= end)
return;
int mid = (start + end)/2;
mergesort(list, start, mid);
mergesort(list, mid + 1, end);
merge(list, start, mid, end);
}
private static void merge(ArrayList<? extends Comparable> list, int start, int mid, int end)
{
ArrayList<? extends Comparable> temp = new ArrayList<Comparable>(end - start + 1);
int j = mid + 1;
for (int i = start; i <= mid; i++)
{
while (j <= end && list.get(i).compareTo(list.get(j)) > 0)
{
temp.add(list.get(j));
j++;
}
temp.add(list.get(i));
}
while (j <= end)
{
temp.add(list.get(j));
j++;
}
int j = 0;
for (int i = start; i <= end; i++)
{
list.set(i, temp.get(j));
j++;
}
}
}
的問題是,我無法添加元素,以「臨時」陣列,編譯器說,我應該改變溫度可比,但我不能代替從「臨時元素「到」列表「。 據我所知,編譯器認爲該列表可能是整數和臨時浮點數。我如何將「temp」設置爲與「list」相同的類型?
Collections.sort()的簽名是什麼?你應該有同一個。 – 2014-10-26 22:12:01