我尝试使用冒泡排序算法对数组元素进行排序时遇到错误。 从用户接受数组元素后发生错误。
参考: 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)
答案 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)谷歌可能比使用堆栈溢出更好。