冒泡排序程序出错

时间:2015-08-09 19:12:44

标签: java bubble-sort

我尝试使用冒泡排序算法对数组元素进行排序时遇到错误。 从用户接受数组元素后发生错误。

参考: http://www.java2novice.com/java-sorting-algorithms/bubble-sort/

代码:

package com.interview.programs;
import java.util.Scanner;
public class BubbleSort
{
    public static void bubble(int array[])
    {
        int n=array.length;
        int k;
        for(int m=n;m>=0;m--)
        {
            for(int i=0;i<n-1;i--)
            {
                k=i+1;
                if(array[i] > array[k])
                {
                    swap(i, k, array);
                }
            }
            print(array);
        }
    }
    private static void swap(int i, int j, int[] array)
    {
        int temp;
        temp=array[i];
        array[i]=array[j];
        array[j]=temp;
    }
    private static void print(int[] array)
    {
        for(int i=0;i<array.length;i++)
        {
            System.out.println(" "+array[i]);
        }
    }
    public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        BubbleSort b=new BubbleSort();
        Scanner input=new Scanner(System.in);
        int n;
        System.out.println("How many number you want to sort? ");
        n=input.nextInt();
        int[] array = new int[n];
        System.out.println("Enter numbers: ");
        for(int i=0;i<n;i++)
        {
            array[i]=input.nextInt();
        }
        b.bubble(array);
        System.out.println("Your sorted array numbers are: ");
        for(int i=0;i<n;i++)
        {
            System.out.print(+array[i]+" ");
        }
    }
}

输出:

How many number you want to sort? 
3
Enter numbers: 
6
3
9
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
    at com.interview.programs.BubbleSort.bubble(BubbleSort.java:14)
    at com.interview.programs.BubbleSort.main(BubbleSort.java:50)

4 个答案:

答案 0 :(得分:1)

方法泡沫中的


          for(int i=0;i<n-1;i--)

将i--改为i ++

答案 1 :(得分:1)

当您尝试从数组或大于其长度的索引访问负索引时,会引发

Exception java.lang.ArrayIndexOutOfBoundsException

在这种情况下,您尝试在冒泡方法 - for(int i=0;i<n-1;i--)内的第二个中访问索引-1。将i--更改为i++会在您从i开始0并将其增加到n-1之前对其进行修正。

答案 2 :(得分:1)

在你的for中改变i--到i ++(int i = 0; i&lt; n-1; i - )

答案 3 :(得分:0)

数组索引超出范围异常是当您尝试访问数组中不存在的项时发生的情况。在你的情况下是元素-1。数组只能包含索引大于0的元素。

当您收到这样的错误时,如果您阅读错误,它会为您提供信息和行号。另外,对于特定错误(例如:什么是java.lang.arrayindexoutofboundsexception)谷歌可能比使用堆栈溢出更好。