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--;
}