Guest User

Untitled

a guest
Dec 17th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. // ConsoleApplication6.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. //
  3.  
  4. #include "pch.h"
  5. #include <iostream>
  6. #include <map>
  7. #include <string>
  8. #include <algorithm>
  9. #include <vector>
  10. using namespace std;
  11. // перегрузка операторов для сравнения строк
  12. const bool operator>(const string &left, const string &right) {
  13. for (int i = 0; i < min(left.size(),right.size()); i++) {
  14. if (left[i]!=right[i]) return (left[i] > right[i]);
  15. }
  16. return false;
  17. }
  18. const bool operator<(const string &left, const string &right) {
  19. return !(left > right || left == right);
  20. }
  21.  
  22. // быстрая сортировка по возрастанию
  23.  
  24. void qsort(vector<string> &buffer,int b, int e) {
  25. int l = b, r = e;
  26. string piv = buffer[(l + r) / 2]; // основным элементом возьмём средний
  27. while (l <= r) {
  28. // определяем границы подмассива
  29. while (buffer[l] < piv) l++; // инкрементируем l, пока l-й элемент меньше основного
  30.  
  31. while (buffer[r] > piv) r--; // декрементируем r, пока r-й элемент больше основного
  32. if (l <= r) std::swap(buffer[l++], buffer[r--]); // если l ещё меньше r, то меняем их местами, и продолжаем
  33. // рекурсивно обрабатываем подмассив
  34. if (b < r) qsort(buffer,b, r);
  35. if (e > l) qsort(buffer,l, e);
  36. }
  37. }
  38.  
  39.  
  40. int main()
  41. {
  42. setlocale(LC_ALL, "Rus");
  43. string massive[4][4];
  44. vector<string> buffer;
  45. cout << "Введите массив шестнадцатиричных двухзначных чисел: " << endl;
  46. for (int j = 0; j < 4; j++) {
  47. for (int i = 0; i < 4; i++) {
  48. cin >> massive[j][i];
  49. }
  50. }
  51. for (int j = 0; j < 4; j++) {
  52. for (int i = 0; i < 4; i++) buffer.push_back(massive[j][i]);
  53. qsort(buffer,0, 3);
  54. if (j % 2 != 0) {
  55. reverse(buffer.begin(), buffer.end());
  56. }
  57. for (int i = 0; i < 4; i++) {
  58. massive[j][i] = buffer[i];
  59. }
  60. buffer.clear();
  61. }
  62. cout << "Ваш отсортированный массив: \n";
  63. for (int j = 0; j < 4; j++) {
  64. for (int i = 0; i < 4; i++) {
  65. cout << massive[j][i] << " ";
  66. }
  67. cout << endl;
  68. }
  69. return 0;
  70. }
Add Comment
Please, Sign In to add comment