2014-01-28 8 views
0

Я не понимаю, что происходит в этом коде. Повторная публикация с предыдущего кода. Может кто-нибудь объяснить, что здесь происходит? Я понимаю концептуально, что список перенаправляется по одному элементу за раз, но я просто не могу понять этот код.Выбор Java Сортировка Confusion

import java.io*; 

public class Example { 

    public static void main(String[] args) throws IOException { 

     int age[] = new int[10]; 
     int i, j; 
     int smallest; 
     int temp; 
     String line; 
     BufferedReader in; 
     in = new BUfferedReader(new InputStreamReader(System.in)); 
     for(i = 0; i<= 9; i++) 
     { 
     System.out.println("Enter an age: "); 
     line = in.readline(); 
     age[i] = Integer.valueOf(line).intValue(); 
     } 
     for(i = 0; i<= 9, i++) { 
     smallest = i; 
      for(j = 1; j<=9; j++) 
      { 
       if(age[j] < age[smallest]) { 
        smallest = j; 
       } 
      } 
      for (i = 0; i<=9; i++) 
      { 
      System.out.println(age[i]); 
      } 
     } 
    } 
    } 
+0

Это выглядит, как вы пытаетесь сделать BubbleSort. Это точный код? (Я заметил, например, что temp и line никогда не используются). – FuriousGeorge

+0

Можете ли вы сузить свой вопрос до более конкретного, например, я не понимаю, почему этот код делает * x *, или, может быть, я не понимаю, что делает этот конкретный цикл? – BlackVegetable

+0

Это будет сортировка сортировки, если вы замените 'smallest' и' i' после 'for (j' loop (и исправления этого для начала на' i' вместо '1'). Это глупо так. – zapl

ответ

2

Это похоже на реализацию Bubble Sort. Существует широкий объем информации по теме этого классического (и неэффективного!) алгоритма как в Интернете, так и в книгах по теме фундаментальных алгоритмов.

0

импорт java.io *;

общественного класса Example {

государственной статической силы основных (String [] арг) броски IOException {

int age[] = new int[10]; 
    int i, j; 
    int smallest; 
    int temp; 
    String line; 
    BufferedReader in; 
    in = new BUfferedReader(new InputStreamReader(System.in)); 
    for(i = 0; i<= 9; i++) 
    { 
    System.out.println("Enter an age: "); 
    line = in.readline(); 
    age[i] = Integer.valueOf(line).intValue(); 
    } 
    for(i = 0; i<= 9, i++) { 
    smallest = i; 
     for(j = 1; j<=9; j++)// MISTAKE IS IN THIS LINE; YOU SHOULD START THE VALUE OF J FROM I+1(for(j = i+1; j<=9; j++))) 
     { 
      if(age[j] < age[smallest]) { 
       smallest = j; 
      } 

     } 
      //ALSO AFTER FINDING THE SMALLEST ELEMENT YOU HAVE TO SWAP THE SMALLEST ELEMENT WITH I ELEMENT 
      /*int temp=age[i]; 
      age[i]=age[smallest]; 
      age[smallest]=temp*/ 
     for (i = 0; i<=9; i++) 
     { 
     System.out.println(age[i]); 
     } 
    } 
} 

}