Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для Дмытро
2 / 2 / 1
Регистрация: 01.04.2013
Сообщений: 259

Разобрать пример с Array.Sort()

08.07.2014, 01:09. Показов 2660. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! не могу понять как так получается что строка sr1.Sort(ref db_arr); возвращает отсортированный массив db_arr... почему так? sr1 ведь пустой(нулевой) массив... это благодаря
Кликните здесь для просмотра всего текста
C#
1
2
foreach (DataBase d in db_object)
                Console.WriteLine("{0}\t{1}\t{2}",d.id,d.login,d.password);
что ли...
Кликните здесь для просмотра всего текста
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
using System;
 
namespace ConsoleApplication1
{
    // Используем обобщенный интерфейс IComparable
    class DataBase : IComparable<object>
    {
        public string login, password;
        public int id;
        byte sort; // Переменная, принимающая возможные значения типа сортировки
                   // 1 - сортировка по id
                   // 2 - сортировка по логину
 
        public DataBase() {}
 
        public DataBase(string login, string password, int id)
        {
            this.login = login;
            this.password = password;
            this.id = id;
        }
 
        // Реализуем интерфейс IComparable<T>
        public int CompareTo(object other)
        {
            // Проверим тип объекта obj
            DataBase db = other as DataBase;
            if (db != null)
            {
                switch (db.sort)
                {
                    case 1:
                        {
                            if (this.id > db.id)
                                return 1;
                            if (this.id < db.id)
                                return -1;
                            else
                                return 0;
                        }
                    case 2:
                        {
                            if (String.Compare(this.login, db.login) > 0)
                                return 1;
                            if (String.Compare(this.login, db.login) < 0)
                                return -1;
                            else
                                return 0;
                        }
                    default:
                        throw new FormatException("Такой сортировки не существует");
                }
            }
            else
                throw new ArgumentException("Данный параметр не относится к базе данных");
        }
 
        // Метод, реализующий сортировку
        public void Sort(ref DataBase[] db_object)
        {
            try
            {
                Array.Sort(db_object);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
 
            foreach (DataBase d in db_object)
                Console.WriteLine("{0}\t{1}\t{2}",d.id,d.login,d.password);
        }
 
        public void NumberSort(byte j, ref DataBase[] arr)
        {
            for (int i = 0; i < arr.Length; i++)
                arr[i].sort = j;
        }
    }
 
    class Program
    {
        static void Main()
        {
            DataBase[] db_arr = new DataBase[5];
            db_arr[0] = new DataBase("alex85", "sddd", 14);
            db_arr[1] = new DataBase("dm23", "12345", 2);
            db_arr[2] = new DataBase("rvklops", "ss", 5);
            db_arr[3] = new DataBase("Djeff", "sdsdsdf", 86);
            db_arr[4] = new DataBase("dff","s",15);
 
            Console.WriteLine("Исходная таблица: \n-----------------\n\n" + 
                "ID\tLogin\tPassword\n");
            foreach (DataBase d in db_arr)
                Console.WriteLine("{0}\t{1}\t{2}",d.id,d.login,d.password);
 
            Console.WriteLine("\nОтсортированная таблица БД по id-пользователя: " +
                "\n----------------------------------------------\n" +
                "ID\tLogin\tPassword\n");
            DataBase sr1 = new DataBase();
            sr1.NumberSort(1, ref db_arr);
            sr1.Sort(ref db_arr);
 
            Console.WriteLine("\nОтсортированная таблица БД по логину пользователя: " +
                "\n----------------------------------------------\n" +
                "ID\tLogin\tPassword\n");
            sr1.NumberSort(2, ref db_arr);
            sr1.Sort(ref db_arr);
                        
            Console.ReadLine();
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.07.2014, 01:09
Ответы с готовыми решениями:

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

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

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

2
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
08.07.2014, 02:12
Цитата Сообщение от Дмытро Посмотреть сообщение
строка sr1.Sort(ref db_arr); возвращает отсортированный массив db_arr
Ну ты же его передаёшь для сортировки, вот его и сортирует.
1
Life Builder
 Аватар для sk007
531 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,755
08.07.2014, 02:14
вы ведь в строчке
C#
1
sr1.Sort(ref db_arr);
по ссылке передаете массив db_arr Вот вам сортирует этот массив и возвращает sr1. С заполненным отсортированным массивом.

А строчки которые вы выше написали, там просто выдает массив на экран и все.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.07.2014, 02:14
Помогаю со студенческими работами здесь

Что происходит при Array.Sort
помогите описать строчку там два метода т.е. что там происходит Array.Sort(s, (p1, p) =&gt; p1.Mark.CompareTo(p.Mark));//метод...

Работа с String и Array.Sort, задачка
Всем привет, помогите в решении пожалуйста: Нужно сделать через массив String, отсортировать его при помощи Array.Sort, где в начале...

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
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