冒泡排序问题:在主线程中获取异常

时间:2016-06-16 01:50:30

标签: java

我是java的初学者。在这里帮助我尝试做BubbleSorting并在主要方法中获得异常。请告诉我在这里做的错误在哪里。

package Programs;

import java.util.Scanner;
public class EBubleSorting {

@SuppressWarnings("resource")
public static void main(String[] args) {
     Scanner in = new Scanner(System.in);
     System.out.println("Enter the Size");
     int Size = in.nextInt();
     int [] array = new int[Size];
     int temp =0;
     System.out.println("Enter the elemnts of an Array");
     for (int i =0 ; i<Size ; i++)
     {
         array[i] = in.nextInt();
     }
     System.out.println("==============");
    // Bubble Sorting Starts 
     for (int ii =0 ; ii<Size ; ii++)
     {
        if(array[ii] > array[ii+1])
        {

            array[ii+1] = temp;
            System.out.println(array[ii+1]);
            array[ii+1] = array[ii];
            System.out.println(array[ii+1]);
            array[ii] = temp;
            System.out.println(array[ii]);
        }
        else if( array[ii] == array[ii+1]) 
        {

        }




     }


}


}

2 个答案:

答案 0 :(得分:2)

数组的索引从0到(array.length-1)。这是第一个问题。 如果你想冒泡排序一个数组,这里有一个可能对你有用的代码。

public static void bubbleSort(int[] arr) {
    boolean swapped = true;
    int j = 0;
    int tmp;
    while (swapped) {
        swapped = false;
        j++;
        for (int i = 0; i < arr.length - j; i++) {
            if (arr[i] > arr[i + 1]) {
                tmp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = tmp;
                swapped = true;
            }
        }
    }
}

答案 1 :(得分:0)

在此代码中

 for (int ii =0 ; ii<Size ; ii++)
 {
    if(array[ii] > array[ii+1])

ii等于Size - 1(最后一项)时,array[ii+1]将失败

如果数据大小为4,则数据为

 array[0] = 2
 array[1] = 4
 array[2] = 3
 array[3] = 1

然后当ii为3(数组的最后一项)时,您无法访问array [3 + 1],因为这将超出数组的范围