Сортировка двумерного массива - C# (179319)
Формулировка задачи:
Как отсортировать массив например по 4 столбцу?
Решение задачи: «Сортировка двумерного массива»
textual
Листинг программы
int[,] arr; // Массив для сортировки
int columnIdx = 4; // Колонка по которой сортируем
// Переносим данные колонки, по которой нужно выполнить сортировку, в отдельный массив
int[] columnValues = new int[arr.GetLength(0)];
int[] valuesIndexes = new int[arr.GetLength(0)];
for (int i=0; i<arr.GetLength(0); i++)
{
columnValues[i] = arr[i,columnIdx];
valuesIndexes[i] = i;
}
// Сортируем массив чтобы получить индексы для перестановки
Array.Sort(columnValues, valuesIndexes);
// Переставляем элементы в соответствии с valuesIndexes
for (int idx1=0; idx1<valuesIndexes.Length; idx1++)
{
int idx2 = valuesIndexes[idx1];
if (idx1 == idx2) continue;
for (int j=0; j<arr.GetLength(1); j++)
{
int temp = arr[idx1, j];
arr[idx1,j] = arr[idx2,j];
arr[idx2,j] = temp;
}
int tempIdx = valuesIndexes[idx1];
valuesIndexes[idx1] = idx1;
valuesIndexes[tempIdx] = tempIdx;
}