.NET 4.x Простая сортировка двумерного массива - C#
Формулировка задачи:
Здравствуйте! не могу сделать сортировку двумерного массива. Ввод и вывод я сделала, а саму сортировку не могу. помогите пожалуйста. Вот начало моей программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[,]A;
int N;
Console.WriteLine("сколько строк?");
N=Convert.ToInt16(Console.ReadLine());
int M;
Console.WriteLine("сколько столбцов?");
M=Convert.ToInt16(Console.ReadLine());
A = new int[N, M];
Random r = new Random();
for (int i = 0; i < N; i++)
for (int j = 0; j < M; j++)
A[i, j] = r.Next(1, 10);
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
Console.Write(A[i, j] + ",");
Console.WriteLine();
}; Console.ReadLine();
}
}
}Решение задачи: «.NET 4.x Простая сортировка двумерного массива»
textual
Листинг программы
using System;
class Program
{
public static void Main(string[] args)
{
int rowsCount, colsCount;
Console.WriteLine("Число строк:");
rowsCount = int.Parse(Console.ReadLine());
Console.WriteLine("Число столбцов:");
colsCount = int.Parse(Console.ReadLine());
int[,] array = GenerateRandomArray(rowsCount, colsCount);
Console.WriteLine("Неупорядоченный массив:");
PrintArray(array);
int[] linearArray = ToLinearArray(array);
BubbleSort(linearArray);
array = ToSquareArray(linearArray, rowsCount, colsCount);
Console.WriteLine("Упорядоченный массив:");
PrintArray(array);
Console.ReadLine();
}
/// <summary>
/// Генерация двумерного массива заданного размера, заполненного случайными целыми числами
/// </summary>
/// <param name="rowsCount">Число строк</param>
/// <param name="colsCount">Число столбцов</param>
/// <returns>Двумерный массив целых чисел</returns>
public static int[,] GenerateRandomArray(int rowsCount, int colsCount)
{
int[,] result = new int[rowsCount, colsCount];
Random random = new Random();
for (int i = 0; i < rowsCount; i++)
for (int j = 0; j < colsCount; j++)
result[i, j] = random.Next();
return result;
}
/// <summary>
/// Вывод двумерного массива в консоль
/// </summary>
/// <param name="array">Двумерный массив целых чисел</param>
public static void PrintArray(int[,] array)
{
int rowsCount = array.GetLength(0),
colsCount = array.GetLength(1);
for (int i = 0; i < rowsCount; i++)
{
for (int j = 0; j < colsCount; j++)
{
Console.Write("{0}\t", array[i,j]);
}
Console.WriteLine();
}
}
/// <summary>
/// Сортировка массива пузырьком
/// </summary>
/// <param name="array">Массив целых чисел</param>
public static void BubbleSort(int[] array)
{
for (int i = 0; i < array.Length; i++)
for (int j = 0; j < i; j++)
{
if (array[i] < array[j])
{
int swap = array[i];
array[i] = array[j];
array[j] = swap;
}
}
}
/// <summary>
/// Конвертация двумерного массива в линейный
/// </summary>
/// <param name="array">Двумерный массив целых чисел</param>
/// <returns>Одномерный массив целых чисел</returns>
public static int[] ToLinearArray(int[,] array)
{
int rowsCount = array.GetLength(0),
colsCount = array.GetLength(1);
int[] result = new int[rowsCount * colsCount];
for (int i = 0; i < rowsCount; i++)
{
for (int j = 0; j < colsCount; j++)
{
result[colsCount*i + j] = array[i, j];
}
}
return result;
}
/// <summary>
/// Конвертация одномерного массива в двумерный
/// </summary>
/// <param name="array">Одномерный массив целых чисел</param>
/// <param name="rowsCount">Требуемое число строк</param>
/// <param name="colsCount">Требуемое число столбцов</param>
/// <returns>Двумерный массив целых чисел</returns>
public static int[,] ToSquareArray(int[] array, int rowsCount, int colsCount)
{
int[,] result = new int[rowsCount, colsCount];
for (int i = 0; i < rowsCount; i++)
{
for (int j = 0; j < colsCount; j++)
{
result[i, j] = colsCount * i + j < array.Length ? array[colsCount * i + j] : default(int);
}
}
return result;
}
}