/* Сортировка подсчётом Автор: Антон Кобзев */ #include #include #define MAX_ELEMENT_VALUE 3000 // Данная сортировка накладывает ограничение на максимально значение сортируемых чисел int main() { int n, count[MAX_ELEMENT_VALUE * 2 + 1] = {0}, // count[i] - сколько встретилось число i во входном потоке i, value, inputRes = 0; printf("Enter elements count: "); if (scanf("%d", &n) != 1 || n <= 0) { printf("Error, incorrect input\n"); // Ошибка, если ввели не число, а что-то ещё return 1; } printf("Enter elements: "); for (i = 0; i < n; i++) { inputRes = scanf("%d", &value); if (value > MAX_ELEMENT_VALUE) { printf("Error, too large number: %d, max allowed: %d\n", value, MAX_ELEMENT_VALUE); return 1; } else if (value < -MAX_ELEMENT_VALUE) { printf("Error, too small number: %d, min allowed: %d\n", value, -MAX_ELEMENT_VALUE); return 1; } else if (inputRes == 1) { count[value + MAX_ELEMENT_VALUE]++; // Считаем, сколько раз ввели данное число } else { printf("Error, incorrect input\n"); // Ошибка, если ввели не число, а что-то ещё return 1; } } for (i = 0; i < MAX_ELEMENT_VALUE * 2 + 1; i++) while (count[i]--) // Сколько раз число ввели, столько раз его и выводим printf("%d ", i - MAX_ELEMENT_VALUE); printf("\n"); return 0; } // SESH