2015-03-08 4 views
-2

Я все еще не могу понять это правильно. Код в сортировке пузырьков неверен. Как я могу получить это право? Что я должен изменить или добавить, чтобы получить правильные результаты? Заранее спасибо. :)Код сортировки пузырьков в JAVA

import java.util.Random; 
import java.util.Scanner; 

public class HomeWork { 

    public static void main(String[] args) { 
     Scanner s = new Scanner(System.in); 

     int choice; 
     int e; 

     Random t = new Random(); 
     for (e = 1; e <= 5; e++) { 
      System.out.println(t.nextInt(1000)); 
     } 
     System.out.println(" \n1: BUBBLE SORT "); 
     System.out.println(" 2: SELECTION SORT "); 
     System.out.println(" 3: QUICK SORT "); 
     System.out.println(" Choose a number from 1-3 "); 
     choice= s.nextInt(); 

     if(choice == 1) { 
      System.out.print("You chose BUBBLE sort!"); 
      int temp, q, w; 
      for(int i=0;i<w-1;i++) { //I think there is something wrong here in my bubble sort code. 
         // What should I add or change to make this correct? 
       for(int j=0;j<w-1-i;j++) { 
        if(q[j]>q[j+1]) { 
         temp = q[j]; 
         q[j] = q[j+1]; 
         q[j+1] = temp; 
         System.out.println(q[i]+""); // What should I change here to print the correct results? 
        } else if(choice == 2) { 
         System.out.print("You chose SELECTION sort!"); 
        } else if(choice == 3) { 
         System.out.println("You chose QUICK sort!"); 
        } else { 
         System.out.println("Not in the choices!"); 
        } 
       } 
      } 
     } 
    } 
} 

Я все еще просто новичок. Пожалуйста, помогите. Спасибо заранее

+1

По крайней мере, вы должны хорошо форматировать код при представлении его публике. При редактировании сообщения подумайте об удалении всего текста «все неправильно»/«новый здесь»/«спасибо», поскольку он не предоставляет никакой дополнительной информации. –

+1

Looping верна, но переменные 'q и w' не инициализируются никакими значениями, и вам нужен еще один цикл для печати отсортированного массива. – Abhi

ответ

0
public static void main(String[] args) { 

    int a[] = { 1, 5, 100, 40, 80, 50 }; 

    int length = a.length; 
    int temp; 

    for (int i = 0; i < length; i++) { 
     for (int j = 1; j < length - i; j++) { 
      if (a[j - 1] > a[j]) { 
       temp = a[j - 1]; 
       a[j - 1] = a[j]; 
       a[j] = temp; 
      } 
     } 
    } 

    for (int i = 0; i < a.length; i++) { 
     System.out.print(a[i] + " "); 
    } 
} 

Как парень заметил выше, этот алгоритм сортировки пузырь, и парень выше, что ваша переменная (ж) не так, все не так, и в качестве чаевых в будущем опубликовать сообщение об ошибке , с кодом, это, вероятно, почему вы получили downvote и/или потому, что это довольно просто.

прощаю Кроме меня, но я не имею затмение, и теперь кодирование в C++, но это должно работать

int x[] = new int[5] 
Random t = new Random(); 
for (e = 1; e <= 5; e++) { 
    x[e] = t.nextInt(1000); // you didn't even assign any variables to sort, that's one problem, you just printed them. 
} // and idk how you get random int's in java, but if this doesn't work, just make your own random int generator. 
    // There's LOTS of better ones than the one your using now. 

int temp, q, w; 

for(int i=0;i< 5;i++) { 
    for(int j=0;j<5-i;j++) { 
     if(q[j]>q[j+1]) { 
      temp = q[j-1]; 
      q[j-1] = q[j]; 
      q[j] = temp; 
     } 
     // Add 'else ifs' here 
    } 
} 

for (int i = 0; i < 5; i++) { // and this will print the results 
    System.out.print(q[i] + " "); 
} 

Это должно работать, ИДК, на самом деле не опытный в Java>.>, И кстати там есть тонны книг, в которых описывается алгоритм, вы должны сначала просмотреть свой код очень хорошо, потому что это просто ошибка, как сейчас, эти люди в переполнении стека не милосердны, все программисты, которые действительно тяжело на вас, но они умны. (например, я: D)

[EDIT] -btw, просто объедините это с вашим кодом, но вот несколько полезных сайтов. для случайных int's - http://www.javapractices.com/topic/TopicAction.do?Id=62 для сортировки пузырей - http://examples.javacodegeeks.com/core-java/bubble-sort-algorithm-in-java-code-example/

+0

О, кстати, я просто заметил, что вы используете DRjava или что-то еще, Eclipse IDE намного лучше, он может обнаруживать ошибки без создания и лучше использовать IDE в большинстве способов (и самых популярных), и если вы решите получите его, если вы посмотрите учебники, посмотрите на последние, даже если у них нет много просмотров на youtube. Также theres способ лучше помочь сообществу/форумам. –

+1

Благодарим за помощь. :) Я все еще студент, поэтому я не могу понять Java. Но на самом деле, большое вам спасибо за вашу доброту. : D –

2

Ваша проблема в том, что вы не определили q или w - возможно, вы хотите, чтобы они были массивом чисел и его длиной. Кроме того, поскольку ваша сортировка пузырьков автоматически не определяет, когда список отсортирован и затем остановлен, он больше похож на комбинированный вид пузыря/выбора.

0
public class BubbleSort { 

    public static void main(String[] args) { 

     int a[] = { 1, 5, 100, 40, 80, 50 }; 

     int length = a.length; 
     int temp; 

     for (int i = 0; i < length; i++) { 
      for (int j = 1; j < length - i; j++) { 
       if (a[j - 1] > a[j]) { 
        temp = a[j - 1]; 
        a[j - 1] = a[j]; 
        a[j] = temp; 
       } 
      } 
     } 

     for (int i = 0; i < a.length; i++) { 
      System.out.print(a[i] + " "); 
     } 
    } 
} 
+0

как это полезно? –

+0

@jangroth Что в этом не плохого кодекса? –

+0

Я не знаю, что не так с этим кодом, надеюсь, ничего нет;). Это просто не отвечает на вопрос OP о ** его ** коде - на самом деле это не отвечает ни на какой ** вопрос. Это в значительной степени случайный фрагмент кода ... (BTW, я не ваш downvoter.) –

Смежные вопросы