gpt4 book ai didi

java - 如何正确调用Java中的方法

转载 作者:行者123 更新时间:2023-12-02 05:33:52 24 4
gpt4 key购买 nike

我有以下关于合并排序算法的代码。一段时间没有使用 Java,我完全忘记了如何正确调用 MergeSort 方法以使其对某些指定的数组进行排序。目前,MergeSort(A) 正在引发错误(因为 MergeSort 方法是通用的?)。它告诉我,我应该将 MergeSort 签名改为 MergeSort(int[] A)。任何帮助将不胜感激!

public static void main(String[] args){
int[] A = {4,7,9,2,3,3,0,1};
System.out.println(Arrays.toString(A));

MergeSort(A);
}


public static <T extends Comparable<T>> void MergeSort(T[] A){
MergeSort(A, 0, A.length - 1);
}

private static <T extends Comparable<T>> void MergeSort(T[] A, int p, int r){
if(p < r){
int q = (p + r)/2;
MergeSort(A,p,q);
MergeSort(A,q + 1, r);
merge(A,p,q,r);
}
}

private static <T extends Comparable<T>> void merge(T[] A, int p, int q, int r){
T[] temp = (T[])(new Comparable[A.length]);

int first1 = p, last1 = q;
int first2 = q + 1, last2 = r;
int index = first1;

while(first1 <= last1 && first2 <= last2){
if(A[first1].compareTo(A[first2]) < 0){
temp[index] = A[first1];
first1++;
} else {
temp[index] = A[first2];
first2++;
}
index++;
}

while(first1 <= last1){
temp[index] = A[first1];
first1++; index++;
}
while(first2 <= last2){
temp[index] = A[first2];
first2++; index++;
}

for(index = p; index <= r; index++){
A[index] = temp[index];
}
}

最佳答案

此错误是因为 int 是基元,基元数组不能用作通用数组。

你可以做的是使用相应的包装类型Integer来代替。将您的数组声明为

Integer[] A = {4,7,9,2,3,3,0,1};

它会工作得很好。

关于java - 如何正确调用Java中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25216353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com