从高到低排序数组

时间:2018-11-20 22:36:40

标签: java arrays

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    int[] x;
    x= new int [3];
    x[0]=4;
    x[1]=1;
    x[2]=2;
    x[3]=3;
    x=sortArray (x);
    System.out.println (x[2]);
}

public static int indexOfMaxInRange(int[] A, int i){
    int maxIndex=A[0];
    while (i < A.length) {
        if (A[i]>maxIndex){
            maxIndex= A[i];
        }
        i++;
    }
    return maxIndex;
}

 public static int[] swapElement (int[] A,int i1,int i2) {
    int i1value=A[i1];
    int i2value=A[i2];
    A[i1]=A[i2value];
    A[i2]=A[i1value];
    return A;
}

 public static int[] sortArray (int[] A) {
    for (int i = 0; i < A.length; i++) {
        int x=indexOfMaxInRange (A,i);
        swapElement (A,x,i);
    }
    return A;
}

这会继续出现错误。 我似乎找不到程序的问题。 该程序的目的是按从高到低的顺序对数组进行排序。

1 个答案:

答案 0 :(得分:0)

让我们从x [3] = 3开始。由于您声明x的大小为3,因此最大索引为2。这可能是您最初的错误 ArrayIndexOutOfBoundsError -这基本上意味着您正在尝试为数组的索引分配一个不在[0,len(array)-1]范围内的值。因此,要么增加数组的大小,要么不将元素分配给索引3。

此外,让我们知道您遇到的错误将对您有所帮助,以供将来参考。

在调用函数时,请尝试在函数名称和左括号之间不要留空格。我相信它仍然可以编译,但是阅读起来很奇怪。另外,在等号周围添加空格。例如:

int x=indexOfMaxInRange (A,i);

应为:

int x = indexOfMaxInRange(A,i);

从我的收集中,您正在实现选择排序,在该操作中,您将获得整个数组的最大值,将其放置为第一个元素,并在不考虑第一个元素并将该元素作为第二个元素的情况下找到数组的最大值在数组中。等等等等。

您的交换函数看起来与sortArray函数一样不错,但是indexMaxOfRange函数不正确。我将让您自己修复该函数,但我会说indexMaxOfRange期望返回索引,并且在该函数中,您都没有将maxIndex指定为索引。