Сортировка рваного массива

122
02 мая 2021, 12:00

То, что у меня получилось, сортирует элементы массива в строках. Мне нужно, чтобы сортировались все элементы массива. Например,

6 1 2 3
4 9 8
7 5 0
0 1 2 3 
4 5 6 
7 8 9  
static void Main(string[] args)
        {
            Console.WriteLine("Array before sort:");
            int[][] jagged = new int[5][];//объявление рваного массива: количество строк и количество элементов внутри
            jagged[0] = new int[6];
            jagged[1] = new int[2];
            jagged[2] = new int[4];
            jagged[3] = new int[9];
            jagged[4] = new int[5];
            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < jagged[i].Length; j++)//заполнение массива случайными числами и вывод их на экран
                {
                    jagged[i][j] = rand.Next(-15, 15);
                    Console.Write(jagged[i][j] + " ");
                }
                Console.WriteLine();
            }
            Console.WriteLine("Array after sort:");
            for (int i = 0; i < jagged.Length; i++)
            {
                Array.Sort(jagged[i]);
            }
            Array.Sort(jagged, (x, y) => x.Length.CompareTo(y.Length));
            for (int i = 0; i < jagged.Length; i++)
            {
                for (int j = 0; j < jagged[i].Length; j++)
                {
                    Console.Write(jagged[i][j]+" ");
                }
                Console.WriteLine();
            }
            Console.ReadKey();
        } 
Answer 1

Пишем метод для печати массива

void PrintArray(int[][] source)
{
    for (int i = 0; i < source.Length; i++)
    {
        for (int j = 0; j < source[i].Length; j++)
            Console.Write($"{source[i][j]} ");
        Console.WriteLine();
    }   
}

Потом метод для сортировки

void SortJagged(int[][] source)
{
    var len = source.Sum(x=>x.Length);
    var arr = new int[len];
    int ind = 0;
    for(int i=0; i<source.Length; i++)
        for(int j=0; j<source[i].Length; j++)
            arr[ind++]=source[i][j];
    Array.Sort(arr);
    ind = 0;
    for (int i = 0; i < source.Length; i++)
        for (int j = 0; j < source[i].Length; j++)
            source[i][j] = arr[ind++];
}

Потом убираем из вашего кода всё ненужное

Random rand = new Random();
int[][] jagged = new int[5][];//объявление рваного массива: количество строк и количество элементов внутри
jagged[0] = new int[6];
jagged[1] = new int[2];
jagged[2] = new int[4];
jagged[3] = new int[9];
jagged[4] = new int[5];
for (int i = 0; i < 5; i++)
    for (int j = 0; j < jagged[i].Length; j++)//заполнение массива случайными числами и вывод их на экран       
        jagged[i][j] = rand.Next(-15, 15);
Console.WriteLine("Before sorting");
PrintArray(jagged);
SortJagged(jagged);
Console.WriteLine("After sorting");
PrintArray(jagged);

Получаем вывод

Before sorting
14 12 -9 -5 13 -8 
-3 -7 
1 7 -12 -4 
5 4 5 -9 -13 14 -10 -5 13 
1 -10 11 14 -3 
After sorting
-13 -12 -10 -10 -9 -9 
-8 -7 
-5 -5 -4 -3 
-3 1 1 4 5 5 7 11 12 
13 13 14 14 14 
READ ALSO
Upload Images , Asp.Net core

Upload Images , Asp.Net core

пытаюсь загрузить images в бд или на сервер , но не получаетсяможет кто нибудь поможет мне

110
MarkdownTextBlock для WPF

MarkdownTextBlock для WPF

Для UWP есть MarkdownTextBlock

96
Что делать если нет дампа mysql?

Что делать если нет дампа mysql?

Перенёс базу данных с сервера в облако, загрузил на на новый сервер и понял, что надо было делать дамп, а доступа к тому сервера нет никакого,...

138