2 / 2 / 0
Регистрация: 12.10.2011
Сообщений: 93

Сортировка строк по алфавиту

03.11.2011, 04:16. Показов 106865. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть массив строк(на англ.), нужно его отсортировать по алфавиту. Не интересует готовый метод Sort, или LINQ запросы, или другие готовые методы. Как производить посимвольное сравнение для двух строчек и где можно посмотреть номера символов(интересуют буквы и около них) в кодировке?

Также, как сортировать строки, если они написаны кирилицей? Тут все методы хороши.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.11.2011, 04:16
Ответы с готовыми решениями:

Сортировка строк по алфавиту
Не могу понять почему не происходит сортировка по алфавиту все данные вводятся вручную в консоле public static void ...

Сортировка строк в файле по алфавиту
Помогите у меня есть файл из него я читаю строки первая и вторая считались и если по алфавиту первая начинается с в а вторая с а то...

Сортировка массива строк по алфавиту и возрастанию чисел
Здравствуйте. Есть строки в массиве: L_1_Dune-2-DOS.ogg L_2_Dune-2-DOS.ogg L_3_Dune-2-DOS.ogg L_4_Dune-2-DOS.ogg ...

7
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
03.11.2011, 06:46
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
static void Main(string[] args)
        {
            string[] arr = new string[] { "aaqqq", "baqqq", "bbqqq", "abqqq" };
 
            Console.WriteLine("BEFORE:");
            for (int i = 0; i < arr.Length; i++) Console.WriteLine("{0}. {1}", i + 1, arr[i]);
            
            for (int i = 0; i < arr.Length; i++)
            {
                for (int j = 0; j < arr.Length - 1; j++)
                {
                    if (needToReOrder(arr[j], arr[j + 1]))
                    {
                        string s = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = s;
                    }
                }
            }
 
            Console.WriteLine();
            Console.WriteLine("AFTER:");
            for (int i = 0; i < arr.Length; i++) Console.WriteLine("{0}. {1}", i + 1, arr[i]);
            Console.ReadKey();
        }
 
        protected static bool needToReOrder(string s1, string s2)
        {
            for (int i = 0; i < (s1.Length > s2.Length ? s2.Length : s1.Length); i++)
            {
                if (s1.ToCharArray()[i] < s2.ToCharArray()[i]) return false; 
                if (s1.ToCharArray()[i] > s2.ToCharArray()[i]) return true;
            }
            return false;
        }
Результат
BEFORE:
1. aaqqq
2. baqqq
3. bbqqq
4. abqqq

AFTER:
1. aaqqq
2. abqqq
3. baqqq
4. bbqqq
Работает и с русским алфавитом:
C#
1
string[] arr = new string[] { "абййй", "баййй", "ббййй", "ааййй" };
BEFORE:
1. абййй
2. баййй
3. ббййй
4. ааййй

AFTER:
1. ааййй
2. абййй
3. баййй
4. ббййй
Добавлено через 58 секунд
это был пример БЕЗ
Цитата Сообщение от WST_Lucifer Посмотреть сообщение
Sort, или LINQ
4
 Аватар для Celly
158 / 148 / 25
Регистрация: 23.01.2011
Сообщений: 319
03.11.2011, 10:53
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static void Main(string[] args)
{
    string[] array = { "aaa", "xxx", "yy", "zzz", "cxc", "ccx", "absb", "asdhajksnd", "utuerui" };
    bool flag = true;
    while (flag)
    {
        flag = false;
        for (int i = 0; i < array.Length - 1; ++i)
            if (array[i].CompareTo(array[i + 1]) > 0)
            {
                string buf = array[i];
                array[i] = array[i + 1];
                array[i + 1] = buf;
                flag = true;
            }
    }
    foreach (string s in array)
        Console.WriteLine("{0} ", s);
    Console.ReadKey();
}
3
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
15.02.2013, 13:04
Вот есть такая сортировка на плюсах
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void sort(Cpro *p, int N)
{
    int i, k=1;
    Cpro q;
    while (k)
    {
        k=0;
        for (i=0;i<N-1;i++)
        {
            if(strcmp(p[i].Getnp(), p[i+1].Getnp())>0)
            {
                q=p[i];
                p[i]=p[i+1];
                p[i+1]=q;
                k=1;
            }
        }
    }
}
N - размер массива

Как сделать её на шарпе? Помогите

Добавлено через 2 минуты
Вот то что я сделал на шарпе, но в строке if (one[e].Getnp > one[j].Getnp) ошибка CS0019: Оператор ">" не может применяться к операндам типа "группа методов" и "группа методов"
C#
1
2
3
4
5
6
7
8
9
10
11
12
for (int e = 0; e < k - 1; e++)
                        {
                            for (int j = e + 1; j < k; j++)
                            {
                                if (one[e].Getcr > one[j].Getcr)
                                {
                                    CSpro temp = one[e];
                                    one[e] = one[j];
                                    one[j] = temp;
                                }
                            }
                        }
как это исправить?

Добавлено через 6 минут
прошу прошения, но я забыл про скобочки. там будет if (one[e].Getnp() > one[j].Getnp())
и ошибка теперь Оператор ">" не может применяться к операндам типа "string" и "string"
0
 Аватар для sashk0
72 / 72 / 7
Регистрация: 14.03.2012
Сообщений: 201
15.02.2013, 13:09
может просто написать
C#
1
if (one[e] > one[j])
?
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
15.02.2013, 14:11
Уважаемый Celly, вы предлагали код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
bool flag = true;
    while (flag)
    {
        flag = false;
        for (int i = 0; i < array.Length - 1; ++i)
            if (array[i].CompareTo(array[i + 1]) > 0)
            {
                string buf = array[i];
                array[i] = array[i + 1];
                array[i + 1] = buf;
                flag = true;
            }
    }
но в моей программе оно не работает и выдаёт ошибку CS1061: "test_sort.CSpro" не содержит определения для "CompareTo" и не был найден метод расширения "CompareTo", принимающий тип "test_sort.CSpro" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) (в строке if (one[e].CompareTo(one[e + 1]) > 0))

Добавлено через 28 секунд
что там в юзинге добавить надо?

Добавлено через 1 минуту
Цитата Сообщение от sashk0 Посмотреть сообщение
может просто написать
Код C#
1
if (one[e] > one[j])
?
нет так не выйдет
ошибка CS0019: Оператор ">" не может применяться к операндам типа "Koryagin_Roman_lab3_class.CSpro" и "sort_test.CSpro"

Добавлено через 3 минуты
Цитата Сообщение от qwertun Посмотреть сообщение
"Koryagin_Roman_lab3_class.CSpro"
((( один раз забыл исправить на "sort_test.CSpro"

Добавлено через 32 минуты
СОРТИРОВКА РАБОТАЕТ!!!!!!!
C#
1
2
3
4
5
6
7
8
9
10
11
12
for (int e = 0; e < k - 1; e++)
                        {
                            for (int j = e + 1; j < k; j++)
                            {
                                if (string.Compare(one[e].Getnp(), one[j].Getnp()) > 0)
                                {
                                    CSpro temp = one[e];
                                    one[e] = one[j];
                                    one[j] = temp;
                                }
                            }
                        }
0
10 / 10 / 0
Регистрация: 20.11.2012
Сообщений: 163
Записей в блоге: 1
02.03.2017, 20:36
а как называется этот метод сортировки, и можете пояснить ее на словах?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18308 / 14232 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 1
02.03.2017, 22:07
tatarin4555, Сортировка пузырьком
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.03.2017, 22:07
Помогаю со студенческими работами здесь

Сортировка в struct по алфавиту. Сортировка в файле
Допустим вот такая вот структура struct Art_space { public string Name { get; set; } ...

Сортировка по алфавиту
Здравствуйте, у меня есть такой вопрос: у меня есть несколько сортировок, мне нужно их переделать так, что бы они работали как с числами...

Сортировка по алфавиту
Здравствуйте, я новичок в этом деле. Слезно прошу помощи. Задача, значит, такая: Дана строка символов, состоящая из произвольного...

Сортировка по алфавиту
Есть массив Мой код выдает их в следующем порядке , а нужно , причем последнего результата я достигаю, если несколько раз нажимаю на...

Сортировка по алфавиту в List
как в List`е сделать сортировку по алфавиту в поле Фамилия(или Имя)? p.s. структура с индексаторами


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru