2014-10-23 3 views
-4

Я пытаюсь создать пузырь в массиве в java в течение некоторого времени, но каждый раз, когда он просто делает несколько, а затем он следует за списком массивов.сортировка массивов только сортирует несколько

public void mysort() { 
    Random randomNumbers = new Random(); 

    int randomArray[] = new int[20]; 

    for (int j = 0; j <= 19; j++) { 
     randomArray[j] = randomNumbers.nextInt(200 + 1); 
     for (int k = 1; k < 20; k++) { 
      if (randomArray[k - 1] < randomArray[k]) { 
       int hjelp = randomArray[k - 1]; 
       randomArray[k - 1] = randomArray[k]; 
       randomArray[k] = hjelp; 
      } 
     } 
    } 
    for (int i = 0; i <= 19; i++) { 
     System.out.println(randomArray[i]); 
    } 
} 

Как правильно обработать мой пузырь?

+1

где ваш тип пузыря? –

+0

Этот вопрос не содержит фактической операции сортировки. –

+0

Вы инициализируете массив и запускаете алгоритм сортировки 20 раз, я уверен, что это не то, что вы намеревались сделать. – EpicPandaForce

ответ

1

Вы должны заполнить массив первым, а затем вызвать род. Вы «сортируете» массив 20 раз, пока он еще не завершен.

public void mysort() { 
    Random randomNumbers = new Random(); 

    int randomArray[] = new int[20]; 

    for (int j = 0; j < randomArray.length; j++) { 
     randomArray[j] = randomNumbers.nextInt(200) + 1; 
    } 

    for (int i = 0; i < randomArray.length; i++) { 
     for (int k = 1; k < randomArray.length; k++) { 
      if (randomArray[k - 1] < randomArray[k]) { 
       int hjelp = randomArray[k - 1]; 
       randomArray[k - 1] = randomArray[k]; 
       randomArray[k] = hjelp; 
      } 
     } 
    } 

    for (int i = 0; i < randomArray.length; i++) { 
     System.out.println(randomArray[i]); 
    } 
} 
+0

Ничего себе, я не видел пузырь типа complexcity N. На самом деле я никогда не видел сорта со сложностью N. Пробовали ли вы свой код? – StackFlowed

+0

@StackFlowed Я не должен был давать ему пользу сомнения, да. Это O (n^2) ... правильно. – EpicPandaForce

+1

Спасибо, что он отлично работает сейчас: D – Jiberish

1

Необходимо сначала заполнить массив. Вы пытаетесь заполнить и отсортировать в одно и то же время.

Заселите:

for (int j = 0; j <= 19; j++){ 
     randomArray[j] = randomNumbers.nextInt(200+1); 
} 

Сортировка:

BubleSort();

+0

где ваш код сортировки пузыря? –

1

Вы код должен быть так:

Random randomNumbers = new Random(); 
int randomArray[] = new int[20]; 
for (int j = 0; j <= 19; j++) { 
    randomArray[j] = randomNumbers.nextInt(200 + 1); 
} 
for(int j=0;j<20;j++) { 
    for (int k = 1; k < 20; k++) { 
     if (randomArray[k - 1] < randomArray[k]) { 
      int hjelp = randomArray[k - 1]; 
      randomArray[k - 1] = randomArray[k]; 
      randomArray[k] = hjelp; 
     } 
    } 
} 
for (int i = 0; i <= 19; i++) { 
    System.out.println(randomArray[i]); 
} 

Примечание вы делаете это в порядке убывания. если вы хотите сделать это в изменении порядка по возрастанию

if (randomArray[k - 1] < randomArray[k]) 

в

if (randomArray[k - 1] > randomArray[k]) 
Смежные вопросы