Я изучаю эту книгу со вчерашнего дня, и после того, как я понял и применил первый алгоритм, я попытался пойти самостоятельно и посмотреть по-другому. Вот, в Java, показанный алгоритм:Почему мой алгоритм сортировки быстрее, чем в книге «Введение в алгоритмы» в книге Х. Кормена?
public static int[] sort(int[] array)
{
for(int i = 1; i < array.length; i++){
int value = array[i];
int j = i - 1;
while(j >= 0 && array[j] > value){
array[j + 1] = array[j];
j--;
}
array[j+1] = value;
}
return array;
}
А вот мой:
public static int[] sortb(int[] array)
{
for(int i = 0; i < array.length; i++){
int value = array[i];
int j = i;
while(j < array.length && value > array[j]){
array[j] = array[j + 1];
j++;
}
array[j] = value;
}
return array;
}
1 млн вызова функции для каждого, я получил 32 мс для первого и 25 мс для второго , Я все еще начинаю с алгоритмов, поэтому я понятия не имею о значении.
Это не имеет никакого значения. Я потратил больше времени на то, чтобы сосредоточиться на алгоритмах и меньше на измерении их скорости. Если вы не знаете, как правильно выполнять измерения, вы можете получить всевозможные результаты и тратить свое время, пытаясь найти смысл там, где нет смысла. – Kayaman
@FarazDurrani Я почти уверен, что преподаватели преподают алгоритмы, их больше интересует «Большой O», чем миллисекунды, полученные плохими измерениями. – Kayaman
Я не работаю с профессором, но сам по себе – Despirithium