Мне нужно использовать сортировку выбора для сортировки двумерного массива. Проблема в том, что мне нужно сортировать столбцы массива, а не строки.
Вот как я выделяю двумерный массив (чтобы показать структуру):
int** array = new int*[rows];
for (int i = 0; i < rows; i++) {
array[i] = new int[columns];
}
Затем я добавляю в него некоторые предметы. Вот моя функция сортировки:
void selectionSort(int* arr, int n)
{
int i, j, min_idx;
for (i = 0; i < n; i++)
{
min_idx = i;
for (j = i + 1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
swap(&arr[min_idx], &arr[i]);
}
}
Я не определяю своп, поскольку он не требует пояснений.
Итак, опять же, мне нужно отсортировать каждый столбец матрицы. Например:
Введите:
5 3 1
2 0 9
4 2 6
Выход:
2 0 1
4 2 6
5 3 9
Есть идеи, как это сделать? Прямо сейчас я переставляю матрицу дважды, а между транспозициями я сортирую ее, но я не думаю, что это хороший вариант из-за ее медлительности.