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

Задача

Отсортировать массив строк по алфавиту. Учитывать только первый символ каждой строки.

Решение

 

Решение данной задачи мало чем отличается от сортировки чисел, т.к. буквы алфавита в таблице кодов символов следуют друг за другом. Это значит, например, что буква 'a' имеет код на единицу меньше, чем 'b'. При этом в Паскале не обязательно даже получать коды букв, можно непосредственно сравнивать сами буквы.

Для того чтобы получить первую букву строки, являющейся элементом массива, надо учесть, что строка сама по себе является своеобразным массивом. Другими словами, мы имеем дело с двумерным массивом. Чтобы извлечь первый элемент вложенных массивов, надо указать второй индекс равный 1. Например, str[i][1], где i - это текущий элемент массива строк, а 1 - первый символ.

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

Программа на языке Паскаль: 

 

const N = 10;
var 
    str: array[1..N] of string[20];
    s: string[20];
    i, j: byte;
begin
    for i:=1 to N do 
        readln(str[i]); 
 
    for i:=1 to N do write(str[i], ' ');
    for i:=1 to N-1 do
        for j:=1 to N-i do
            if str[j][1] > str[j+1][1] then begin
                s := str[j];
                str[j] := str[j+1];
                str[j+1] := s;
            end;
 
    writeln;
    for i:=1 to N do write(str[i], ' ');
    writeln;
end.

 

Пример выполнения программы:

one
two
three
four
five
six
seven
eight
nine
ten
one two three four five six seven eight nine ten 
eight four five nine one six seven two three ten

 

Тема

Строки

Уровень

Комбинированные задачи

Добавить комментарий