Я искал самый быстрый алгоритм для сортировки 1 000 000 целых чисел. До сих пор удивительно, что встроенная функция qsort C, кажется, самая быстрая из всего, что я пробовал (я тестировал предварительно отсортированные, обратные отсортированные и случайные файлы ввода). В среднем, я получаю около 0,7 секунды для предварительной и обратной сортировки и .2 секунды для случайных.Оптимизация qsort
Как я могу оптимизировать его, чтобы работать еще быстрее? Есть ли какие-нибудь быстрые трюки? Я знаю, что std-тип C++ работает быстрее, но это невозможно использовать в C ... Я привязал свой код.
int compare(const void *x, const void *y){
return (*(int*)x >= *(int*)y);
}
qsort(list, 1000000, sizeof(int), compare);
Что вы знаете о целых чисел, которые вы пытаетесь разобраться? – NPE
Вы должны начать все сначала и убедиться, что результаты, которые вы получаете, на самом деле отсортированы. Ваша функция сравнения недействительна, так как вы, вероятно, получаете вздор. –
Вы не знаете, что ваша конкретная реализация 'std :: sort()' вашей реализации на C++ быстрее, чем ваша конкретная проблема '' qsort() 'вашей реализации, до тех пор, пока вы не проверите эти два. –