尝试使用冒泡排序将一组随机整数从大到小排序

时间:2018-01-09 15:59:58

标签: java arrays sorting

因此,作为任务的一部分,我被要求创建一个范围内随机值的数组,然后将其从最小到最大排序(我使用冒泡排序),然后首先打印总和数组中的所有元素,然后将它们从最小到最大列出。

我的问题是我一直收到ArrayIndexOutOfBoundsException错误,但找不到这个问题所在。

你可以在我已经放入randomArrays方法的代码中看到一个for循环,它创建了我在main方法中声明的数组大小的随机值,然后,在for循环下面,我&#39 ; ve创建了一个if语句,用于检查元素的值是否大于后面的元素,如果是,则交换元素的位置,直到它们全部排序为最小到最大,循环终止。

非常感谢任何帮助,谢谢:)

public class MyArray {

public static void main(String[] args) {
    int[] elements = new int[50];
    int min = 0;
    int max = 50;

    randomArrays(elements, max, min);

}

public static void randomArrays(int[] elements, int max, int min) {
    int range = max - min; //defines the range of the integers
    int temp;
    boolean fixed = false;

    while (fixed == false) {
        fixed = true;

        for (int i = 0; i < elements.length; i++) {
            elements[i] = min + (int) (Math.random() * range);
            while (i < elements.length) {
                if (elements[i] > elements[i + 1]) {
                    //if 8   >    5
                    temp = elements[i + 1];
                    //store 5 in temp
                    elements[i + 1] = elements[i];
                    //put the 8 in the 5's place
                    elements[i] = temp;
                    fixed = false;
                }
                i++;
            }

        }
    }

}
//System.out.println(elements[i]);
}

2 个答案:

答案 0 :(得分:1)

  

我的问题是我不断收到ArrayIndexOutOfBoundsException   错误,但无法找到这个问题所在。

问题在于for loop的条件。 ArrayOutOfBounds时出现i=49例外,然后您尝试访问不存在的i+1索引。

更改

for (int i = 0; i < elements.length; i++)

for (int i = 0; i < elements.length-1; i++)

答案 1 :(得分:0)

您已经可以看到您的代码超出了数组限制。 如果你看一下你的代码,就会发生以下情况

while (i < elements.length) {

它的while循环部分,所以如果你改变它以正确循环通过正确数量的元素,你的问题将被解决..用这个改变你的while循环代码

while (i < elements.length-1) {