Intereting Posts
sizeof union больше, чем ожидалось. как здесь происходит выравнивание по типу? Получение данных от Java-Client (данные содержат int, short, string) Динамический массив указателей на структуры выполнение if / else if / else с fork () Измените тонкость всех процессов по тонкости Есть ли способ проверить макрос, и он равен одному значению в одно и то же время слишком мало аргументов для функции и не может использоваться как функция – начало C Как я могу отключить отладчик VC ++ для исключений? C char to delphi conversion Можно ли настроить CLION для компиляции исходных файлов в проекте независимо? Почему главное необходимо в программе указатель стека streamа Почему я получаю «метка может быть только частью инструкции, а объявление не является выражением», если у меня есть переменная, которая инициализируется после метки? Как вы можете получить доступ к членам C-структуры, не зная названия? Почему 32-битный указатель расшифровывается при добавлении в uint64_t?

c bead sort поможет

Я имею большой список положительных целых чисел в массиве и хотел бы использовать сортировку бусинок, но нашел, что они не были хорошо документированы. есть ли у кого-нибудь код для сортировки бусинок?

Эта страница имеет реализации на нескольких языках, включая C: http://rosettacode.org/wiki/Sorting_algorithms/Bead_sort

Из этого вопроса появляется модификация бисера, которая использует O(N) дополнительное пространство вместо O(N*k) как в версии Rosetta Code.

 void sort(int A[], int N) { int i, j; int *R = calloc(N, sizeof(int)); do for (i = j = 0; i < N; i++) if (A[i]) { R[j++]++; A[i]--; } while (j); for (j = N, i = 0; i < N; i++) A[i] = R[--j]; // A is now sorted ascending. free(R); } 

Тем не менее, он по крайней мере в 10 раз медленнее, чем qsort , и становится все хуже, чем больше получаются элементы массива. Я бы не рекомендовал его использовать.