Сортировка

Мы уже научились сортировать массивы целых и вещественных чисел, а теперь надо сор-

тировать строки. Можно придумать разные способы, но наиболее часто встречается алфавитная сортировка. При сортировке строк возникают две проблемы.

1. Определить, какая из двух строк «меньше», то есть какая из двух должна стоять выше.

2. Сортировка массивов чисел предусматривает перестановку элементов массива. В случае строк это связано с копированием больших объемов данных, что крайне невыгодно.Начнем с первой. Мы говорили, что есть функция сравнения строк strcmp, которая возвращает нуль, если строки равны, и не нуль, если они разные. Оказывается, эта функция возвращает «разность» этих строк, то есть разность кодов их первых отличающихся символов.Если функция вернула отрицательное число, то первая строка «меньше» второй и стоит по алфавиту раньше, если положительное – наоборот. Здесь надо учитывать, что сравнение идет по таблице кодов, и коды заглавных букв меньше, чем коды строчных (и для русских, и для английских).

Вторая проблема более серьезная и решается с помощью указателей. Сначала выделим в

памяти массив указателей на строки и сделаем так, чтобы i-ый указатель указывал на i-ую

строку массива. Теперь достаточно правильно расставить указатели и сортировка будет выполнена – к строкам можно будет обращаться в алфавитном (или каком-либо другом) порядке с помощью этих указателей. Процедура сортировки методом пузырька выглядит так:

void SortStrings ( char *s[], int n ) // *s[] – массивуказателей

{ // n – число строк

char *p;








Дата добавления: 2015-10-05; просмотров: 532;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.