2015-06-15 2 views
-1

Во-первых, можете ли вы сказать мне, какой фрагмент кода лучше выбора? Тогда, если вы знаете лучшие способы выбора сортировки, можете ли вы поделиться им?Лучший выбор Сортировка по Java

Примечание: Пожалуйста, проверьте второй код ближе, потому что он более сложный, чем выглядит.

class SelectionSort { 

    public static void selectionSort(double[] list) { 
     for (int i = 0; i < list.length - 1; i++) { 

      double currentMin = list[i]; 
      int currentMinIndex = i; 

      for (int j = i + 1; j < list.length; j++) { 
       if (currentMin > list[j]) { 
        currentMin = list[j]; 
        currentMinIndex = j; 
       } 
      } 

      if (currentMinIndex != i) { 
       list[currentMinIndex] = list[i]; 
       list[i] = currentMin; 
      } 
     } 
    } 
} 

.

class SelectionSort { 

    public static double[] selectionSort(double[] array) { 
     for (int i = 0; i < array.length; i++) { 
      for (int j = 0; j < i; j++) { 
       if (array[j] > array[i]) { 
        double temp = array[j]; 
        array[j] = array[i]; 
        array[i] = temp; 
       } 
      } 
     } 
    } 
} 

ответ

0

Производительность мудрый, оба одинаковые, O (n2). Второй код немного чище.

1

Оба метода помогут решить вашу проблему, но во-вторых, это ясно, и я думаю, что это будет быстрее. Зачем? Потому что он должен сделать меньше действий для решения проблемы: в первом вы имеете 2 цикла (как во втором), но также должны сделать 2 ifs vs 1, если во втором. Я не очень уверен в этом, но если программа должна делать меньше действий, это будет быстрее (просто предположение).

Кроме того, я думаю, что это будет быстрее, потому что в первом вы пройдете через все элементы j, некоторые из них ненужные (вам нужно сделать дополнительный if), а во втором вы просто пройдете через элементы что вам нужно, чтобы он был более эффективным.

Итак, в заключение, я думаю, что лучшая практика, которую вы должны использовать, это вторая.

Я надеюсь, что это поможет вам немного!

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