Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.98 KB | None | 0 0
  1. #include "ReadWriter.h"
  2. //iostream, fstream включены в ReadWriter.h
  3. using namespace std;
  4.  
  5. // Функция цифровой сортировки
  6. void radixSort(int *numbers, int array_size)
  7. {
  8.  
  9. }
  10.  
  11. //int k = 1000000;
  12.  
  13. void countingSort(int *arr, int len, int k)
  14. {
  15.     int c[k + 2];
  16.     int b[k + 2];
  17.  
  18.     //инициализация массива
  19.     for (int i = 0; i < k + 2; i++)
  20.     {
  21.         c[i] = 0;
  22.     }
  23.  
  24.     for (int i = 0; i < len; i++)
  25.     {
  26.         c[arr[i]] += 1;
  27.     }
  28.  
  29.     for (int i = 1; i < k + 2; i++) {
  30.         c[i] += c[i - 1];
  31.     }
  32.  
  33.     for (int i = len - 1; i >= 0; i--) {
  34.         b[c[arr[i]] - 1] = arr[i];
  35.         c[arr[i]] -= 1;
  36.     }
  37.  
  38.     for (int i = 0; i < len; i++) {
  39.         arr[i] = b[i];
  40.     }
  41. }
  42.  
  43. //Не удалять и не изменять метод main без крайней необходимости.
  44. //Необходимо добавить комментарии, если все же пришлось изменить метод main.
  45. int main()
  46. {
  47.     //Объект для работы с файлами
  48.     ReadWriter rw;
  49.  
  50.     int *brr = nullptr;
  51.     int n;
  52.  
  53.     //Ввод из файла
  54.     n = rw.readInt();
  55.  
  56.     //cin >> n;
  57.  
  58.     brr = new int[n];
  59.  
  60.     //инициализация массива
  61.     for (int i = 0; i < n; i++)
  62.     {
  63.         brr[i] = 0;
  64.     }
  65.  
  66.     rw.readArray(brr, n);
  67.  
  68.     int mx = 0;
  69.  
  70.     //поиск максимума (передается в сортировку как K)
  71.     for (int i = 0; i < n; i++)
  72.     {
  73.         if (brr[i] > mx)
  74.         {
  75.             mx = brr[i];
  76.         }
  77.     }
  78.  
  79.     countingSort(brr, n, mx);
  80.  
  81.     //Запуск сортировки, ответ в том же массиве (brr)
  82.     //radixSort(brr, n);
  83.  
  84.     //Запись в файл
  85.     rw.writeArray(brr, n);
  86. /*
  87.     for (int i = 0; i < n; i++) {
  88.         cout << brr[i] << " ";
  89.     }
  90. */
  91.     //освобождаем память
  92.     delete[] brr;
  93.  
  94.     return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement