как проверить, отсортирован ли массив 2D от наибольшего к низшему - PullRequest
0 голосов
/ 07 марта 2020

Если у меня есть 2d-массив, подобный этому

  int[,] arr = { { 0, 1, 4 }, { 3, 9, 5 }, { 6, 8, 2 } };
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                Console.Write(arr[i, j] + " ");

            }
            Console.WriteLine();

        }

результат:

0 1 4
3 9 5 
6 8 2

Я хочу проверить, является ли он сортирующим от высшего к низшему, например 8 до 0 Я думал, может быть, тип bool, чтобы проверить, правда это или нет, но я не знаю, сработает ли это

Ответы [ 3 ]

2 голосов
/ 07 марта 2020

Если вы хотите проверить, отсортирован ли весь массив, вы можете использовать Linq как

var flattedList = arr.OfType<int>().ToList();
var result = flattedList.OrderByDescending(x=>x).SequenceEqual(flattedList);
2 голосов
/ 07 марта 2020

Вы можете преобразовать двумерный массив в одномерный, используя метод Cast. Затем убедитесь, что каждый следующий элемент меньше или равен предыдущему, иначе массив не отсортирован по убыванию

int[,] arr = { { 0, 1, 4 }, { 3, 9, 5 }, { 6, 8, 2 } };
var flatten = arr.Cast<int>().ToList();
var isSorted = true;
for (int i = 0; i < flatten.Count() - 1; i++)
{
    if (flatten[i] <= flatten[i + 1])
    {
        isSorted = false;
        break;
    }
}

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

var flatten = arr.Cast<int>();
var isSorted = flatten.Zip(flatten.Skip(1), (current, next) => current >= next).All(x => x);
0 голосов
/ 07 марта 2020

Выполнить сортировку / проверку для каждого последующего одномерного массива. При этом вы можете проверить, отсортированы ли x, y или оба по вашему желанию. У некоторых алгоритмов сортировки есть способ сообщить вам, встроены ли они в сортировку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...