Лекция: Пример 18. Дан массив текстовых переменных. Отсортировать по всем знакам каждого слова в соответствии с алфавитом.
CLS
DATA «512»,«101»,«324»,«712»,«310»,«520»,«001»,«721» REM Формируем исходный массив A$ n = 8
DIM a$(n)
PRINT «Исходный массив»
FOR i = 1 TO n
READ a$(i)
PRINT " "; a$(i);
NEXT i
REM Сортировка
FOR i = 1 TO n
FOR j = 1 TO n k = 1
IF ASC(MID$(a$(i), k, 1)) < ASC(MID$(a$(j), k, 1)) THEN
SWAP a$(i), a$(j) ELSE
IF ASC(MID$(a$(i), k, 1)) = ASC(MID$(a$(j), k, 1)) THEN
k = k + 1
END IF
IF MID$(a$(j), k, 1) = "" THEN SWAP a$(i), a$(j)
NEXT j
NEXT i
REM вводим отсортированный массив на экран
PRINT «Отсортированный»
FOR i = 1 TO n
PRINT " "; a$(i);
NEXT i
Результат:
Исходный массив 512 101 324 712 310 520 001 721
Отсортированный 001 101 310 324 520 512 712 721
Для других исходных данных:
Исходный
Яковлев А. Андреев Д., Сланов Р., Ананко Р., Ваниёва Р., Антонов И… Шейхов М, Гринберг Л., Галич Г., Сапин В.
Отсортированный
Ананко Р., Андреев Д., Антонов И.., Ваниева Р., Галич Г., Гринберг Л., Санин В., Сланов Р., Шейхов М., Яковлев А.
Работа программы. Алгоритм, как и многие программы сортировки, основан па сравнении слов во вложенных циклах. Внешний цикл со счетчиком i задает номер слова для анализа. Внутренний цикл со счетчиком j сравнивает это слово со всеми остальными и при необходимости меняет его на другое. Логической группой может быть не только язык или тип символов, но и отдельная переменная.
Пример 19. Состоит ли В$ только из символов, входящих в А$.