2013-09-26 50 views
0

我在java的初學者,我在使用泡沫尋找一個整數數組的最大數量的問題排序如何在java中使用冒泡排序提取最大數量?

這是我的計劃是如何:

import java.util.Scanner; 
class Bubblesorting 
{ 
    Scanner sc=new Scanner(System.in); 
    void ascendingOrder() 
    { 
     int[] no=new int[10]; 
     System.out.println("ENTER 10 NUMBERS"); 
     for(int i=0;i<no.length;i++) 
     { 
      no[i]=sc.nextInt(); 
      for(int j=0;j<no.length;j++) 
      { 
       for(int k=j;k<no.length-1;k++) 
       { 
        if(no[j]<no[k+1]) 
        { 
         int t=no[k+1]; 
         no[k+1]=no[j]; 
         no[j]=t; 
        } 
       } 
      } 
     } 
     System.out.println(no[no.length]); 
    } 
} 
+0

你是什麼意思_using bubblesort_? –

+0

'no [no.length]'會拋出一個異常(超出界限),因爲它是'no [10]','no'是從0到9. –

+0

我認爲你應該首先填充數組,並至少進行排序它。 – mauretto

回答

2

你不需要排序一個數組以獲得最大數量。只需在陣列上迭代一次,即可更新迄今爲止發現的最大值。喜歡的東西:

import java.util.Scanner; 
class Bubblesorting 
{ 
    Scanner sc=new Scanner(System.in); 
    void ascendingOrder() 
    { 
     int[] no=new int[10]; 
     System.out.println("ENTER 10 NUMBERS"); 
     for(int i=0;i<no.length;i++) 
     { 
      no[i]=sc.nextInt(); 
     } 
     int maxv = no[0]; 
     for (int i =0;i<10;++i) { 
      if (no[i] > maxv) { 
       maxv = no[i]; 
      } 
     } 
     System.out.println(maxv); 
    } 
} 

不過如果你堅持,你必須數組排序第一 - 從排序邏輯分開讀取。您應該先讀取所有數字,然後對整個數組進行排序。另外請記住,大多數編程語言中的數組都是0索引,因此no的有效索引是0no.length-1因此您應該使用System.out.println(no[no.length - 1]);而不是System.out.println(no[no.length]);

+0

謝謝你Ivaylo Strandjev –

0

如果您的條件應該檢查​​更大,然後像if(no[j]>no[k+1])條件。

又辦改變系統輸出

System.out.println(no[no.length-1]); 

您的代碼應該像

Scanner sc=new Scanner(System.in); 
     void ascendingOrder() 
     { 
      int[] no=new int[10]; 
      System.out.println("ENTER 10 NUMBERS"); 
      for(int i=0;i<no.length;i++) 
      { 
       no[i]=sc.nextInt(); 
       for(int j=0;j<no.length;j++) 
       { 
        for(int k=j;k<no.length-1;k++) 
        { 
         if(no[j]>no[k+1]) 
         { 
          int t=no[k+1]; 
          no[k+1]=no[j]; 
          no[j]=t; 
         } 
        } 
       } 
      } 
      System.out.println(no[no.length-1]); 
     }