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

Сортировка класса ArrayList особым способом

11.03.2015, 20:15. Показов 1061. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Nomatter
{
 
    class Program
    {
        static void Main(string[] args)
        {
          string temp;
          bool done=false;
          StreamReader inp = new StreamReader("C:\\Learning and stuff\\Input_N.txt",Encoding.Default);
            temp = inp.ReadLine();
            int num = Convert.ToInt32(temp);
            ArrayList A = new ArrayList();
            string New_Klichka;
            for(int i=0;i<num;++i)
            {
                Sobaka temp_el = new Sobaka();
                temp_el.Klichka= inp.ReadLine();
                temp_el.Poroda = inp.ReadLine();
                temp_el.Pol = inp.ReadLine();
                temp_el.Vozrast =Convert.ToInt32( inp.ReadLine());
                temp_el.Medalei =Convert.ToInt32( inp.ReadLine());
                A.Add(temp_el);
            }
            PrintValues(A);
            Console.WriteLine("После сортировки:");
            A.Sort();
            PrintValues(A);
            Console.WriteLine("Введите имя искомой собаки:");
            New_Klichka = Console.ReadLine();
            for (int i = 0, j = num; i <=j &&!done; )
            {
                int ind = i + j / 2;
                Sobaka temp1 = A[ind] as Sobaka;
               switch( temp1.Klichka.CompareTo(New_Klichka))
               {
                   case -1:
                       i = j / 2;
                       break;
                   case 0:
                       PrintSobaka(temp1);
                       done = true;
                       break;
                   case 1:
                       j = j / 2;
                       break;
               }
            }
            if (!done)
                Console.WriteLine("Этой собаки нет в списке");
                Console.ReadKey();
        }
 
        private static void PrintSobaka(Sobaka B)
        {
            Console.Write("  {0}", B.Klichka.PadRight(10));
            Console.Write("  {0}", B.Poroda.PadRight(10));
            Console.Write("  {0}", B.Pol.PadRight(10));
            Console.Write("  {0}", B.Vozrast);
            Console.WriteLine("  {0}", B.Medalei);
        }
 
        private static void PrintValues(ArrayList A)
        {
            foreach(Sobaka B in A)
                PrintSobaka(B);
        }
    }
}
   class Sobaka:IComparable
   {
        public string Klichka;
        public string Poroda;
        public string Pol;
        public int Vozrast;
        public int Medalei;
        public int CompareTo(object field)
        {
            Sobaka otherSobaka = field as Sobaka;
            if (otherSobaka != null)
            {
                int res = this.Klichka.CompareTo(otherSobaka.Klichka);
                if (res != 0)
                    return res;
                else return this.Klichka.CompareTo(otherSobaka.Vozrast);
            }
            else throw new ArgumentException("Сравниваемое не является объектом класса Sobaka");
        }
   }
Нужно сортировать список по полю Klichka методом простых вставок. Причём это нужно сделать через IComparer, как обращаться к полям внутри этого метода?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.03.2015, 20:15
Ответы с готовыми решениями:

Сортировка ArrayList экземпляров класса
Как создать и заполнить правильно ArrayList экземпляров класса, так чтобы потом можно было отсортировать? Сортировка прописана в классе в...

Дано слово из 12 букв. Переставить его буквы особым способом
Дано слово из 12 букв. Переставить его буквы следующим способом: первая, двенадцатая, вторая, одиннадцатая, .... , пятая, восьмая, шестая,...

Сортировка Arraylist, который содержит элементы типа класса Hospital
У меня есть ArrayList , который содержит элементы типа класса Hospital, как мне написать метод сортировки ArrayList по полю типа double...

3
 Аватар для Lexeq
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
11.03.2015, 21:22
C#
1
2
3
4
5
6
7
    class SortDogByKlichka : IComparer<Sobaka>
    {
        public int Compare(Sobaka x, Sobaka y)
        {
            return string.Compare(x.Klichka, y.Klichka);
        }
    }
0
0 / 0 / 1
Регистрация: 29.09.2013
Сообщений: 96
11.03.2015, 21:34  [ТС]
Цитата Сообщение от Lexeq Посмотреть сообщение
2
3
4
5
6
7
* * class SortDogByKlichka : IComparer<Sobaka>
* * {
* * * * public int Compare(Sobaka x, Sobaka y)
* * * * {
* * * * * * return string.Compare(x.Klichka, y.Klichka);
* * * * }
* * }
Хорошо, это было сделано в стандартном сортировщике, а как методом простых вставок всё это сделать?
0
 Аватар для Lexeq
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
11.03.2015, 22:10
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        public void InsertionSort(Sobaka[] array, IComparer<Sobaka> comparer)
        {
            for (int i = 1; i < array.Length; i++)
            {
                Sobaka cur = array[i];
                int j = i;
                while (j > 0 && comparer.Compare(cur, array[j - 1]) < 0)
                {
                    array[j] = array[j - 1];
                    j--;
                }
                array[j] = cur;
            }
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.03.2015, 22:10
Помогаю со студенческими работами здесь

Сортировка в arraylist
Есть класс, разбивающий строку на составляющие. Создан массив из трех строк, нужно сортировать эти строки по буквенно числовому принципу....

сортировка ArrayList
Есть код в консольном приложении: ArrayList arr = new ArrayList(); arr.Add(&quot;Вася Петров&quot;); arr.Add(&quot;Андрей Павлович&quot;); ...

Создание класса, похожего на ArrayList
Создать класс MyArrayList. В теле класса MyArrayList должен находиться закрытый одномерный массив (тип массива произвольный, можно...

Сортировка коллекции ArrayList
Подскажите пожалуйста можно ли отсортировать коллекцию ArrayList, методом Sort, если в ней находятся различные типы. Например, что было...

Элементы ArrayList записать в поля класса
Всем доброго дня ! Вопрос состоит в том что бы элементы ArrayList записать в class Student class Student : IComparable { ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru