Java快速排序向量
我正在尝试将一个对数组进行快速排序的函数转换为向量快速排序函数。 我一直得到这个找不到的符号。这是我的函数,我正在尝试适应向量快速排序Java快速排序向量,java,vector,quicksort,Java,Vector,Quicksort,我正在尝试将一个对数组进行快速排序的函数转换为向量快速排序函数。 我一直得到这个找不到的符号。这是我的函数,我正在尝试适应向量快速排序 public static void quickSort(Vector<Personne> arr, int low, int high, Personne[] pers) { if (arr.isEmpty() == true || arr.size()== 0) return; if (low >= hig
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);
}
公共静态无效快速排序(矢量arr、整数低、整数高、人员[]人){
如果(arr.isEmpty()==true | | arr.size()==0)
返回;
如果(低>=高)
返回;
int middle=低+(高-低)/2;
int pivot=arr.get(中间).getNumero();
int i=低,j=高;
而(我){
j--;
}
如果(i)
快速排序(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--;
}
if(i基于
您正在将i索引中的元素与j索引中的元素进行交换,因此您似乎忘记将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--;
}
if(i)
错误:找不到符号[…]符号:方法添加(人员)位置:类人员
此错误告诉您,您的Personne
类没有add(Personne)
方法。这似乎不是一个导入问题,正如注释中所建议的,因为您在代码的其他地方使用Personne
对象似乎没有问题
所以,问题是你的Personne
类上根本没有add(Personne)
方法,在这种情况下(撇开看似有问题的设计实践不谈),你需要添加一个。或者,我猜,你确实在这个类上有一个add(Personne)
方法,但它要么是私有的(因此其他类找不到该符号),或者它是包私有的(即,它没有访问修饰符)您试图从另一个包中的类访问它,在这种情况下,该类再次找不到符号您得到的错误是什么?以及if子句,您交换了什么吗?我想不是用那种语气…粘贴堆栈跟踪。这是个玩笑,我想您的意思是“[它一直]给我一个符号错误。”无论如何,当你试图编译时,粘贴从控制台发出的错误。如果Personne
在另一个包或目录中,你需要导入它。在顶部插入这一行;在你的包(如果适用)之后导入{path.to}.Personne;
…当然,占位符“{path.to}
”是该类存在的包。请参见:哦,抱歉,但我无意中删除了该行。让我把它放回去。但即使输入了该行,它仍然不断给我错误:找不到symbolthx。我将其替换为Personne o=arr.elementAt(i);arr.setElementAt(arr.elementAt(j),i);arr.setElementAt(o,j);i++;j--;
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--;
}