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

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

03.11.2011, 04:16. Показов 106749. Ответов 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
18279 / 14202 / 5368
Регистрация: 17.03.2014
Сообщений: 28,882
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru