Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

СТР(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 – законы изменения индексов;

1 i n, 1 j m – диапазоны изменения индексов элементов.

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

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

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

стр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;

Выбор метода решения

Решение задачи реализуем модифицированным методом «пузырька», описанным ранее:

· присвоить индексу внешнего цикла его начальное значение (i = 1) – зафиксировать номер i строки стрi, с которой идет сравнение;

· присвоить индексу внутреннего цикла его начальное значение через внешний (j = i+1);

· сравнить зафиксированное значение стрi с текущим стрj (стрi > стрj);

· выполнить переприсваивание стрпр = стрi, стрi = стрj и стрj = стрпр, если условие выполняется;

· изменить индекс внутреннего цикла по закону j = j + 1;

· повторять три предыдущих пункта пока j £ n;

· изменить индекс внешнего цикла по закону i = i + 1;

· повторять предыдущие пункты, кроме первого, пока i £ n-1;

· прекратить решение при i > n-1.

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





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


Дата добавления: 2015-11-23; Мы поможем в написании ваших работ!; просмотров: 376 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Наглость – это ругаться с преподавателем по поводу четверки, хотя перед экзаменом уверен, что не знаешь даже на два. © Неизвестно
==> читать все изречения...

2675 - | 2239 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.