Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ReadWriter.h"
- //iostream, fstream включены в ReadWriter.h
- using namespace std;
- // Функция сортировки подсчетом
- void countingSort(int *numbers, int array_size) {
- int maxVal = -1;
- for (int i = 0; i < array_size; ++i) {
- if (numbers[i] > maxVal)
- maxVal = numbers[i];
- }
- int *countArr = new int[maxVal + 1];
- int *resultArr = new int[array_size];
- for (int i = 0; i < maxVal + 1; ++i) {
- countArr[i] = 0;
- }
- for (int i = 0; i < array_size; ++i) {
- countArr[numbers[i]]++;
- }
- for (int j = 1; j < maxVal + 1; ++j) {
- countArr[j] += countArr[j - 1];
- }
- for (int i = array_size - 1; i >= 0; --i) {
- countArr[numbers[i]]--;
- resultArr[countArr[numbers[i]]] = numbers[i];
- }
- for (int i = 0; i < array_size; ++i) {
- numbers[i] = resultArr[i];
- }
- delete[] countArr;
- delete[] resultArr;
- }
- //Не удалять и не изменять метод main без крайней необходимости.
- //Необходимо добавить комментарии, если все же пришлось изменить метод main.
- int main() {
- //Объект для работы с файлами
- ReadWriter rw;
- int *brr = nullptr;
- int n;
- //Ввод из файла
- n = rw.readInt();
- brr = new int[n];
- rw.readArray(brr, n);
- //Запуск сортировки, ответ в том же массиве (brr)
- countingSort(brr, n);
- //Запись в файл
- rw.writeArray(brr, n);
- //освобождаем память
- delete[] brr;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement