Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
на собеседованиях джуниоров/интернов.
наш переделанный пузырьковый алгоритм показывает не квадратичную сложность, а обычный logN
который может обогнать штатные методы
boolean validate()
{
for (int i=0; i < array.length; i++){
if (array[i] != sortedArray[i])
return false;
}
return true;
}
public void javaQuickSort() {
timeAmount = System.nanoTime();
Arrays.sort(array);
timeAmount = System.nanoTime() - timeAmount;
}
Bubble Classic, random array Compares: 50 005 000, Switches: 24 750 505, Time: 116 024 377
QuickSort, random array Compares: 436 415, Switches: 22 062, Time: 2 783 738
Bubble Advanced, random array Compares: 45 003 506, Switches: 10 067 942, Time: 58 992 210
Java sort, random array Compares: 0, Switches: 0, Time: 504 525
Bubble Classic, decremental array Compares: 50 005 000, Switches: 50 005 000, Time: 46 714 701
QuickSort, decremental array Compares: 153 632, Switches: 5 000, Time: 199 326
Bubble Advanced, decremental array Compares: 60 022 000, Switches: 30 003 000, Time: 44 974 788
Java sort, decremental array Compares: 0, Switches: 0, Time: 192 186
Bubble Classic, incremental array Compares: 50 005 000, Switches: 24 995, Time: 24 873 255
QuickSort, incremental array Compares: 219 964, Switches: 8 426, Time: 241 551
Bubble Advanced, incremental array Compares: 179 740, Switches: 24 981, Time: 126 364
Java sort, incremental array Compares: 0, Switches: 0, Time: 150 581
весьма неплохой результат обогнать его на декрементальном массиве с пятью случайными числами велосипедом
Как я писал в самом начале — цель была не создать супер-пупер алгоритм.
Меня просто удивило, что в определенном случае, даже такой вариант обогнал штатную оптимизированную сортировку, о чем я и написал вывод, что в узкоспециализированном случае, велосипед может помочь.
Если убрать счетчики метрик, разница будет почти в два раза,
И еще раз — я совершенно не переоцениваю результат.
весьма неплохой результат обогнать его на декрементальном массиве с пятью случайными числами велосипедом
Benchmark Mode Cnt Score Error Units
MyBenchmark.emptySortProcedure avgt 10 0,464 ? 0,005 ms/op
MyBenchmark.sortBubbleAdvanced avgt 10 49,661 ? 0,395 ms/op
MyBenchmark.sortBubbleClassic avgt 10 96,772 ? 1,483 ms/op
MyBenchmark.sortJavaQuickSort avgt 10 0,689 ? 0,009 ms/op
MyBenchmark.sortQuickSort avgt 10 1,292 ? 0,014 ms/op
Еще один разбор пузырьковой сортировки