2013-09-26 2 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, поэтому действующие индексы для нет: 0 - no.length-1, поэтому вы должны System.out.println(no[no.length - 1]); вместо System.out.println(no[no.length]);.

+0

Спасибо Ивайло Странджеву –

0

Ваше условие должно быть проверено выше, чем состояние if(no[j]>no[k+1]).

А также меняются в SYSOUT

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]); 
     } 
Смежные вопросы