2016-04-26 54 views
-4

下面是我对气泡排序的实现。我不确定这个编码有什么问题吗?

它不会给我任何错误。但是我仍然没有获得预期的产出?

package working_5_hours_coding_feels_good; 

public class Working_5_hours_coding_feels_good { 

    private static final int N = 3; 
    public static void main(String[] args) { 
     int i,j,temp ; 
     int []A=new int[N]; 
     A[0]=12; 
     A[1]=53; 
     A[2]=2; 
     System.out.println("this is in real form No sorting"); 
     for(i=0;i<N;i++) 
     { 
     System.out.print(A[i]+" "); 
     } 
      for(j=0;j<N;j++) 
      { 
       for(i=0;i<N;i++) 
       { 
         if (A[i]>A[i+1]) 
         { 
         temp=A[i]; 
          A[i]=A[i+1]; 
          A[i+1]=temp; 
          } 

       } 

      } 
     System.out.println("this is in bubble sorting procedure"); 
     for(i=0;i<N;i++) 
     { 
     System.out.println(A[i]+" "); 
     } 
    } 

} 
+2

'不行'你有更好的解释 – silentprogrammer

+2

欢迎来到Stack Overflow!请[参观],环顾四周,并阅读[帮助],尤其是[*我如何提出一个好问题?](/帮助/如何问) –

回答

1

您正在使用java.lang.ArrayIndexOutOfBoundsException。 在这部分代码,则有这样的循环:

for (i = 0; i < N; i++) { 
      if (A[i] > A[i + 1]) { 
       temp = A[i]; 
       A[i] = A[i + 1]; 
       A[i + 1] = temp; 
      } 
} 

你迭代直到N,并试图达到(A第[i + 1])的N + 1行之后的行,这会导致错误。

如果重复这种方法,你不会有你的错误了:

for (i = 0; i < N - 1; i++) { 
+0

非常感谢你我希望我有15代表投票答案 –

+0

没问题。我很高兴我能帮上忙;) – Akah

0

更改内部for循环 - 您现在使用的限制,直到N和使用数组的索引作为第[i + 1 ],所以在某个时间点击N + 1,抛出ArrayIndexOutOfBoundsException。

更改该条件 - >

for (i=0; i<N-1;i++) { 
      if (A[i] > A[i + 1]) { 
       temp = A[i]; 
       A[i] = A[i + 1]; 
       A[i + 1] = temp; 
      } 
} 

现在,它应该有希望的工作。