/ / Chyba v programe triedenia bublín - java, bubble-sort

Chyba v programe na triedenie bublín - java, bubble-sort

I "m dostať chybu sa snaží triediť prvky poľa pomocou algoritmu triedenia bubliny. Chyba sa stane po prijatí prvkov poľa od používateľa.

referenčné číslo: http://www.java2novice.com/java-sorting-algorithms/bubble-sort/

kód:

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]+" ");
}
}
}

výkon:

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)

odpovede:

1 pre odpoveď č. 1

v bubline metódy
for(int i=0;i<n-1;i--)

zmena i-- na i ++


1 pre odpoveď č. 2

Exception java.lang.ArrayIndexOutOfBoundsException je zvýšená, keď sa pokúsite o prístup k zápornému indexu z poľa alebo indexu, ktorý je väčší ako jeho dĺžka.

V tomto prípade ste sa pokúsili o prístup k indexu -1 vo svojom druhom pre vnútri bublinkovej metódy - for(int i=0;i<n-1;i--), meniace sa i-- na i++opraví to tak, ako začnete i z 0 a chcete, aby sa zvyšoval až do n-1.


1 pre odpoveď č. 3

zmeniť i-- na i ++ vo vašom for (int i = 0; i <n-1; i--)


0 pre odpoveď č. 4

Výnimkou z indexu poľa je čosa stane, keď sa pokúsite pristupovať k položke v poli, ktoré neexistuje. Vo vašom prípade je to prvok -1. Polia môžu obsahovať iba prvky s indexmi väčšími ako 0.

Ak sa vám tieto chyby, ak si prečítatechyba vám poskytne informácie a číslo riadku. Tiež je to asi lepšie google pre konkrétnu chybu (napr .: čo je java.lang.arrayindexoutofboundsexception), než použiť preplnenie zásobníka.