Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. #include "ReadWriter.h"
  2. //iostream, fstream включены в ReadWriter.h
  3. using namespace std;
  4.  
  5. // Функция сортировки подсчетом
  6. void countingSort(int *numbers, int array_size) {
  7. int maxVal = -1;
  8. for (int i = 0; i < array_size; ++i) {
  9. if (numbers[i] > maxVal)
  10. maxVal = numbers[i];
  11. }
  12.  
  13. int *countArr = new int[maxVal + 1];
  14. int *resultArr = new int[array_size];
  15. for (int i = 0; i < maxVal + 1; ++i) {
  16. countArr[i] = 0;
  17. }
  18. for (int i = 0; i < array_size; ++i) {
  19. countArr[numbers[i]]++;
  20. }
  21. for (int j = 1; j < maxVal + 1; ++j) {
  22. countArr[j] += countArr[j - 1];
  23. }
  24. for (int i = array_size - 1; i >= 0; --i) {
  25. countArr[numbers[i]]--;
  26. resultArr[countArr[numbers[i]]] = numbers[i];
  27. }
  28. for (int i = 0; i < array_size; ++i) {
  29. numbers[i] = resultArr[i];
  30. }
  31. delete[] countArr;
  32. delete[] resultArr;
  33. }
  34.  
  35. //Не удалять и не изменять метод main без крайней необходимости.
  36. //Необходимо добавить комментарии, если все же пришлось изменить метод main.
  37. int main() {
  38. //Объект для работы с файлами
  39. ReadWriter rw;
  40.  
  41. int *brr = nullptr;
  42. int n;
  43.  
  44. //Ввод из файла
  45. n = rw.readInt();
  46.  
  47. brr = new int[n];
  48. rw.readArray(brr, n);
  49.  
  50. //Запуск сортировки, ответ в том же массиве (brr)
  51. countingSort(brr, n);
  52.  
  53. //Запись в файл
  54. rw.writeArray(brr, n);
  55.  
  56. //освобождаем память
  57. delete[] brr;
  58.  
  59. return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement