Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ConsoleApplication6.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- //
- #include "pch.h"
- #include <iostream>
- #include <map>
- #include <string>
- #include <algorithm>
- #include <vector>
- using namespace std;
- // перегрузка операторов для сравнения строк
- const bool operator>(const string &left, const string &right) {
- for (int i = 0; i < min(left.size(),right.size()); i++) {
- if (left[i]!=right[i]) return (left[i] > right[i]);
- }
- return false;
- }
- const bool operator<(const string &left, const string &right) {
- return !(left > right || left == right);
- }
- // быстрая сортировка по возрастанию
- void qsort(vector<string> &buffer,int b, int e) {
- int l = b, r = e;
- string piv = buffer[(l + r) / 2]; // основным элементом возьмём средний
- while (l <= r) {
- // определяем границы подмассива
- while (buffer[l] < piv) l++; // инкрементируем l, пока l-й элемент меньше основного
- while (buffer[r] > piv) r--; // декрементируем r, пока r-й элемент больше основного
- if (l <= r) std::swap(buffer[l++], buffer[r--]); // если l ещё меньше r, то меняем их местами, и продолжаем
- // рекурсивно обрабатываем подмассив
- if (b < r) qsort(buffer,b, r);
- if (e > l) qsort(buffer,l, e);
- }
- }
- int main()
- {
- setlocale(LC_ALL, "Rus");
- string massive[4][4];
- vector<string> buffer;
- cout << "Введите массив шестнадцатиричных двухзначных чисел: " << endl;
- for (int j = 0; j < 4; j++) {
- for (int i = 0; i < 4; i++) {
- cin >> massive[j][i];
- }
- }
- for (int j = 0; j < 4; j++) {
- for (int i = 0; i < 4; i++) buffer.push_back(massive[j][i]);
- qsort(buffer,0, 3);
- if (j % 2 != 0) {
- reverse(buffer.begin(), buffer.end());
- }
- for (int i = 0; i < 4; i++) {
- massive[j][i] = buffer[i];
- }
- buffer.clear();
- }
- cout << "Ваш отсортированный массив: \n";
- for (int j = 0; j < 4; j++) {
- for (int i = 0; i < 4; i++) {
- cout << massive[j][i] << " ";
- }
- cout << endl;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment