Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Интегрирование Глава 9.doc
Скачиваний:
3
Добавлен:
12.11.2018
Размер:
1.49 Mб
Скачать
        1. Ранжирование массива символьных строк по алфавиту

Ранжирование массива символьных строк по алфавиту в принципе реализуется использованием методик сортировки символов в строке.

Математически оптимальный вариант – на первом шаге выполнить сортировку символьных строк по первой их букве. При наличии блоков строк с одинаковыми первыми буквами осуществить сортировку каждого блока по второй букве. При необходимости, полученные новые блоки с двумя одинаковыми начальными буквами ранжируются по третьей букве и т.д.

Оптимальный по количеству шагов выполнения алгоритм достаточно сложно реализуется.

Более простой вариант – последовательное попарное сравнение символов двух соседних строк, от первой буквы и далее.

Каждое сравнение определяет возможность одного из вариантов:

  • буквы одинаковы (коды равны);

  • буква текущей строки ближе к началу алфавита, чем буква последующей строки (код первой меньше кода второй);

  • буква текущей строки дальше от начала алфавита, чем буква последующей строки (код первой больше кода второй).

Первый и второй варианты подтверждают правильное расположение по алфавиту сравниваемых строк. Третий – предписывает поменять строки местами.

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

Упорядочение символов в строке по алфавиту рассмотрим на конкретной задаче (9.7) о символьном массиве.

            1. Постановка задачи

Дан не упорядоченный список студенческой группы. Количество студентов не превышает 25, количество символов в каждой строке (фамилия, имя, отчество) не более 30. Требуется отранжировать исходный массив строк по алфавиту.

            1. Формирование математической модели

Исходные данные

СТР(N, М) –массив символьных строк;

N  25 – максимальное количество строк массива;

М  30 – максимальное количество символов в строке;

n – реальное количество строк массива.

Модель массива СТР(N, М):

с11

с12

...

с1j

...

с1k

– 1-я строка (стр1)

с21

с22

...

с2j

...

с2l

– 2-я строка (стр2)

сi1

сi2

...

сij

...

сil

сim

– i-я строка (стрi)

сn1

сn2

...

сnj

...

сnk

– n-я строка (стрn)

i, j – текущие индексы строки массива и символа в строке;

i = i + 1, j = j + 1 – законы изменения индексов;

1in, 1jm – диапазоны изменения индексов элементов.

Характерная особенность массивов символьных строк – длины строк (количество символов каждой) различны, не более максимально возможного значения, заданного в описателе.

Внимание! При составлении расчетных зависимостей под минимальной будем понимать строку с наименьшим кодом.

Расчётные зависимости

стрmin1 = min(стр1, стр2,…, стрi,…, стрn);

стр1 = стрmin1;

стрmin2 = min(стр2,…, стрi,…, стрn);

стр2 = стрmin2;

стрmin i = min(стрi,…, стрn-1, стрn);

стрi = стрmin i;

стрmin n-1 = min(стрn-1,стрn);

стрn-1 = стрmin n-1;