2016-03-16 3 views
-1

Я знаю алгоритм сортировки пузырьков, но мой вопрос в том, что это эффективный код для этой сортировки. У меня есть две модели этого алгоритма, я думаю, что оба делают правильный выбор пузырьков, но что самое лучшее из того, что касается пространства памяти и времени? !!Bubble sort of double array

Модель A:

public static void bubbleSort(double[] array){ 
    boolean sorted; 
    for(int i = 0; i < array.length - 1; i++){ 
     sorted = true; 
     for(int j = array.length - 1; j > i; j--){ 
      //swap 
      if(array[j] < array[j - 1]){ 
       double temp = array[j - 1]; 
       array[j - 1] = array[j]; 
       array[j] = temp; 
       sorted = false; 
      } 
     } 
     if(sorted) 
      break; 
    } 
} 

Модель B:

static void bubbleSort(double[] list) { 
    boolean changed = true; 
    do { 
     changed = false; 
     for (int j = 0; j < list.length - 1; j++) 
      if (list[j] > list[j+1]) { 
       //swap list[j] wiht list[j+1] 
       double temp = list[j]; 
       list[j] = list[j + 1]; 
       list[j + 1] = temp; 
       changed = true; 
      } 
    } while (changed); 
} 
+1

Почему вы думаете, что они сильно отличаются друг от друга? – Thomas

+0

Это в буквальном смысле тот же алгоритм, вы просто добавили do-while в модель B. –

+0

Так что нет предпочтительного! – Dudda

ответ

0

Я пытался проверить их обоих наивным способом с System.currentTimeMillis() на 10000 случайных удваивается.

long a = System.currentTimeMillis(); 
bubbleSort(array); 
long b = System.currentTimeMillis() - a; 

Первый вид немного быстрее. Я всегда тестировал случайные данные отдельно.

Первый в миллисекундах: 179, 170, 185

Второй в миллисекундах: 292, 241, 244

В результате они работают так же, и быстро. В целом в Java нет никакой потребности найти самый быстрый способ любой ценой. Поэтому не беспокойтесь и не используйте никого из них.

+0

Я думаю, что, потому что второй за каждый раз будет охватывать весь массив, независимо от того, какая часть уже отсортирована. Я прав?! – Dudda

+0

Я уверен, что вы правы. –