Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
1 / 1 / 1
Регистрация: 19.09.2013
Сообщений: 96

Что происходит при Array.Sort

27.12.2013, 20:49. Показов 5077. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите описать строчку там два метода т.е. что там происходит

C#
1
Array.Sort(s, (p1, p) => p1.Mark.CompareTo(p.Mark));//метод сортировки по алфавиту
и эти циклы что в них происходит

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (int i = 0; i < s.Length; i++)//цикл
            {
                int c = rand.Next(0, 8);//задаем случайно название авто
                int b = rand.Next(0, 3);//задаем случайно коплектацию для авто
                s[i] = new Sedan( w[c],f[i],complect[b]);
            }
 
   for (int i = 0; i < s.Length; i++)//цикл для комплектации
            {
                String v = "";
                for (int j = 0; j < 1; j++)
                {
                    v = v + s[i].Complectation[j] + "; ";
                }
вот код листинга
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
namespace ConsoleApplication4
{
 
    public class Car//базовый класс содержащий марку машины
    {
        public String Mark;//переменная содержащая марку машины
       
    }
    public class Sedan : Car//класс на основе базового содержащий мощность мотора и комплектацию автомобиля
    {
        public int MotorPower;//переменная содержащая мощность мотора 
        public String[] Complectation;//переменная содержащая комплектацию автомобилей
        public Sedan(String Mark, int MotorPower, String[] Complectation)//конструктор с параметрами
        {
            this.Mark = Mark;
            this.MotorPower = MotorPower;
            this.Complectation = Complectation;
        }
    }
}
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
 
            Random rand = new Random();//случайное заполнение
            string[][] complect = new string[3][];//массив комплектаций
            complect[0] = new string[] { "Базовая" };//заполнение по комплектации
            complect[1] = new string[] { "Средняя" };
            complect[2] = new string[] { "Максимальная" };
            
            
            Sedan[] s = new Sedan[9];//создаем массив из 9 элементов, типа Sedan
            String[] w = {"Порше","Альфа Ромео","Бмв","Бентли","Ваз","Газ","Зил","Лексус","Ауди"};//массив марок машин
            int[] f = { 150, 120, 130, 125, 85, 90,75,95,105 };//массив мощностей машин
 
            Console.WriteLine("Вывод упорядоченный по алфавиту:");//вывод фразы на экран
            Console.WriteLine();
            for (int i = 0; i < s.Length; i++)//цикл
            {
                int c = rand.Next(0, 8);//задаем случайно название авто
                int b = rand.Next(0, 3);//задаем случайно коплектацию для авто
                s[i] = new Sedan( w[c],f[i],complect[b]);
            }
            for (int i = 0; i < s.Length; i++)//цикл для комплектации
            {
                String v = "";
                for (int j = 0; j < 1; j++)
                {
                    v = v + s[i].Complectation[j] + "; ";
                }
 
                Array.Sort(s, (p1, p) => p1.Mark.CompareTo(p.Mark));//метод сортировки по алфавиту
                Console.WriteLine("Авто:" + s[i].Mark+ ", " + "Мощность:" + s[i].MotorPower +"л.с."+ ",Комплектация:" + v);//вывод на экран результата
 
                Console.WriteLine();
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.12.2013, 20:49
Ответы с готовыми решениями:

Сортировка Array.Sort
Я новичок, поэтому объясните как можно более прозрачно. У меня есть массив, который сохраняет название хоккейных команд, в этом массиве...

Как работает Array.Sort
Собственно вопрос в том, как всё-таки работает сортировка Array.Sort? Этот вопрос возник потому, что после анализа время ее работы с...

Сортировка функцией Array.Sort
Даже числа не выводит,чес слово. Что исправить? static void Main(string args) { int n; ...

3
6 / 6 / 2
Регистрация: 22.03.2013
Сообщений: 26
28.12.2013, 17:15
1. В Sort передаётся два параметра - массив для сортировки и делегат (указатель на функцию) типа логического условие, по которому как раз и будет происходить сортировка. Делегат этот обязательно должен принимать два аргумента и возвращать int. Например, при сортировке чисел по убыванию это будет b-a, где a и b - два числа, в данный момент сравниваемые по ходу сортировки.
Такой предикат пишется здесь с помощью лямбда-выражения. Лямбда-выражение - сокращённая форма записи функции, формат - (аргументы) => (результат). Например, условие сортировки по убыванию лямбдой так можно записать:
C#
1
(a,b) => b-a
Строчка
C#
1
Array.Sort(s, (p1, p) => p1.Mark.CompareTo(p.Mark));//метод сортировки по алфавиту
эквивалентна вот этому:
C#
1
2
3
4
5
int Comparer (T p1, T p) //Под Т я имел в виду тип твоих объектов которые ты сортируешь
{
return p1.Mark.CompareTo(p.Mark);
}
ArraySort(s, Comparer);
Получается, в этой строчке мы сортируем элементы массива по величине поля Mark, при этом не пишем отдельную функцию для сравнения по этому признаку, а используем лямбду, чтобы было покороче.
Что-то еще непонятно?
3
1 / 1 / 1
Регистрация: 19.09.2013
Сообщений: 96
01.01.2014, 23:59  [ТС]
C#
1
2
3
4
string[][] complect = new string[3][];//массив комплектаций 
            complect[0] = new string[] { "Базовая" };//заполнение по комплектации
            complect[1] = new string[] { "Средняя" };
            complect[2] = new string[] { "Максимальная" };
почему объявление через две скобки как через одну сделать?обясните пожалуйста
0
6 / 6 / 2
Регистрация: 22.03.2013
Сообщений: 26
05.01.2014, 23:23
string[] - тип массива строк. А если справа ещё одну пару скобок прилепить, то получится массив массивов строк, что мы тут и видим. Такой массив называется двумерным.
Каждый элемент complect - это массив строк.
Не знаю, зачем тут используют двумерный, потому как в качестве элементов выступают массивы по одной строке в каждом. Проще было бы одномерный сделать:
C#
1
2
3
4
string[] complect = new string[3];//массив комплектаций 
complect[0] = "Базовая" ;//заполнение по комплектации
complect[1] = "Средняя" ;
complect[2] = "Максимальная" ;
Теперь элементы масссива - строки. И создавать их можно без new.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.01.2014, 23:23
Помогаю со студенческими работами здесь

Разобрать пример с Array.Sort()
Здравствуйте! не могу понять как так получается что строка sr1.Sort(ref db_arr); возвращает отсортированный массив db_arr... почему так?...

Array.Sort не сортирует одномерный массив
Добрый день! Подскажите, пожалуйста, что не так с кодом? Задача: В одномерном массиве, состоящем из n вещественных элементов, вычислить: ...

Сортировка массива структур с помощью Array.Sort
struct myArray { public int Numb; } class Program { static void Main(string args) { ...

Array.Sort() Какие параметры передать в этот метод?
Array.Sort(); Какие параметры передать в этод метод, чтобы масив отсортироватся не по возрозтанию, а по спаданию?

Как пользоваться функцией Array.Sort() для сортировки по алфавиту
Всем привет обьясните пожалуйсто как пользоваться функцией Array.Sort(); для сортировке по алфавиту для коллекций....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru