我正在尝试将我快速排序数组的函数转换为矢量快速排序函数。 我不断得到这个找不到符号。这是我的功能,我试图适应矢量quickSort
public static void quickSort(Vector<Personne> arr, int low, int high, Personne[] pers) {
if (arr.isEmpty() == true || arr.size()== 0)
return;
if (low >= high)
return;
int middle = low + (high - low) / 2;
int pivot = arr.get(middle).getNumero();
int i = low, j = high;
while (i <= j) {
while (arr.get(i).getNumero() < pivot) {
i++;
}
while (arr.get(j).getNumero() > pivot) {
j--;
}
if (i <= j) {
Vector<Personne> temp = new Vector<Personne>();
temp.add(arr.get(i));
arr.get(i).add(arr.get(j));
i++;
j--;
}
}
if (low < j)
quickSort(arr, low, j, pers);
if (high > i)
quickSort(arr, i, high, pers);
}
这部分功能给了我错误:
if (i <= j) {
Vector<Personne> temp = new Vector<Personne>();
temp.add(arr.get(i));
arr.get(i).add(arr.get(j));
i++;
j--;
}
我尝试了.get()
,.elementAt()
,创建了一个新的临时矢量来保存信息,但我似乎无法修复它。
错误
C:\ Users \ Arnold \ Desktop \ numero3.java:241:错误:找不到符号 arr.get(ⅰ)。新增(arr.get(J)); ^符号:方法添加(Personne)位置: class Personne 1错误
答案 0 :(得分:0)
基于Program: Implement quick sort in java.
的代码段代码private void exchangeNumbers(int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
你正在用i索引中的元素交换i index中的元素,所以你好像忘记将temp
的值放到j
arr
向量索引
if (i <= j) {
Vector<Personne> temp = new Vector<Personne>();
temp.add(arr.get(i));
arr.get(i).add(arr.get(j));
arr.add(temp.get(j)); <--------forget this line
i++;
j--;
}
注意:您的Personne
班级没有添加方法
编译Java程序时,编译器会创建一个列表 所有使用的标识符。如果它找不到标识符所指的内容 (例如,变量没有声明声明)它不能 完成编译。这是找不到符号错误的原因 消息说,它没有足够的信息来分割 将Java代码想要执行的内容放在一起。
答案 1 :(得分:0)
错误:找不到符号[...]符号:方法添加(Personne)位置:类Personne
此错误告诉您,您的Personne
课程没有add(Personne)
方法。这似乎不是一个导入问题,正如评论中所建议的那样,因为您似乎在代码中的其他位置使用Personne
对象而没有问题。
所以,问题是你的add(Personne)
课上根本没有Personne
方法,在这种情况下(除了看似有问题的设计练习)你需要添加一个。{1}}。或者,这是我的猜测,你做在该类上有add(Personne)
方法,但它是私有的(所以其他类不能找到该符号),或者它是package-private(即它没有访问修饰符),你试图从另一个包中的类访问它,在这种情况下,该类不能找到该符号