Забавной находкой сегодня поделился пользователь fj333 с Реддит .
Разбираясь в появившемся год назад фирменном коде Qualcomm Technologies для Android, он обнаружил, что неизвестный программист решил использовать пузырьковую сортировку в рабочем коде, чтобы найти.
максимум в массиве.
Вы можете просмотреть исходный файл по ссылке на Github или под катом, а оценить его в работе может любой владелец устройства с Qualcomm Snapdragon 200 MSM8610 под управлением Android. Любой, кто знаком с алгоритмами сортировки, знает, что пузырьковая сортировка — это обучающий алгоритм, который обычно не используется в рабочем коде из-за его сложности.
неэффективность ; дело в том, что в худшем и среднем случаях она имеет сложность На 2 ) , при этом его емкостная сложность в этом случае равна На) .
Кого это не убедило - используйте пузырьковую сортировку Даже Барак Обама этого не рекомендует. .
И все это не учитывает тот факт, что для нахождения максимума будет достаточно простого поиска.
Был ли обзор кода? История об этом умалчивает. Теги: #qualcomm #Qualcomm Snapdragon #пузырьковая сортировка #Алгоритмы #программирование #Алгоритмы#ifndef ABS #define ABS(x) (((x) < 0) ? -(x) : (x)) #endif /*============================================================================== * Function: bubblesort * * Description: Subroutine for sorting 1-D array elements * * Parameters: double *x ---> input one-dimensional array * int n ---> size of input array * int *m ---> indices of sorted elements *============================================================================*/ void bubblesort(double *x, int n, int *m) { int i, j, t1; double t2; for(i = 0; i < n; i++) m[i] = i; for(i = 0; i < n; i++) { for(j = 0; j <n-1; j++) { if(x[j] < x[j+1]) { t2 = x[j+1]; x[j+1] = x[j]; x[j] = t2; t1 = m[j+1]; m[j+1] = m[j]; m[j] = t1; } } } } /* bubblesort */ /*============================================================================== * Function: absmax * * Description: * * Parameters: double *x ---> input one-dimensional array * int n ---> size of input array *============================================================================*/ double absmax(double *x, int n) { int j, *l; int index = 0; double *y; l = (int *)malloc(n * sizeof(int)); if (NULL == l) { CDBG("%s: Error mem alloc for l.\n", __func__); return -1; } y = (double *)malloc(n * sizeof(double)); if (NULL == y) { free(l); CDBG("%s: Error mem alloc for y.\n", __func__); return -1; } for(j = 0; j < n; j++) y[j] = ABS(x[j]); bubblesort(y, n, l); index = l[0]; free(l); free(y); return ABS(x[index]); }
-
Удаление Вирусов И Защита Пк От Хакеров
19 Oct, 24 -
Основы Беспроводной Безопасности
19 Oct, 24 -
Набор Иконок Флагов Для Сайта
19 Oct, 24