У меня есть некоторые проблемы с тем, как на самом деле я собираюсь выбрать регион правильной четверти. Таким образом, выбирая правильную четверть с более высоким приоритетом, чем сортировку
Я использовал std::sort
, чтобы продемонстрировать сортировку правой четверти из 10 x 10 матрица .
Моя логика c объясняется в комментариях к коду:
void sortRightQuarter(int m[10][10])
{
/*
Indexes of the elements in the Right Quarter
(0, 9) // already sorted
(1, 8), (1, 9) // i = 1, k = 8
(2, 7), (2, 8), (2, 9) // i = 2, k = 7
(3, 6), (3, 7), (3, 8), (3, 9) // i = 3, k = 6
(4, 5), (4, 6), (4, 7), (4, 8), (4, 9) // i = 4, k = 5
(5, 5), (5, 6), (5, 7), (5, 8), (5, 9) // i = 5, k = 5
(6, 6), (6, 7), (6, 8), (6, 9) // i = 6, k = 6
(7, 7), (7, 8), (7, 9) // i = 7, k = 7
(8, 8), (8, 9) // i = 8, k = 8
(9, 9) // already sorted
*/
// Sort the rows [1, 8]
int k = 8;
for (int i = 1; i <= 8; ++i)
{
// pick your favorite sorting function
// to sort elements in the range [m[i][k], last element of the row]
sort(&m[i][k], &m[i][10]);
// change the value of k
if (i < 4)
--k;
else
++k;
}
}
Я использовал ваш код для проверки своей функции. Работает хорошо.