Java quickSort Vectors

时间:2014-11-10 00:50:42

标签: java vector quicksort

我正在尝试将我快速排序数组的函数转换为矢量快速排序函数。 我不断得到这个找不到符号。这是我的功能,我试图适应矢量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错误

2 个答案:

答案 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(即它没有访问修饰符),你试图从另一个包中的类访问它,在这种情况下,该类不能找到该符号