Главная Обратная связь

Дисциплины:






Сортировка методом прямого выбора



 

Алгоритм сортировки массива по возрастанию методом прямого выбора может быть представлен так:

1. Просматривая массив от первого элемента, найти минимальный элемент и поместить его на место первого элемента, а первый — на место минимального.

2. Просматривая массив от второго элемента, найти минимальный элемент и поместить его на место второго элемента, а второй — на место минимального.

3. И так далее до предпоследнего элемента.

 

Вопрос №21

 

Метод прямого обмена. Алгоритм схема программа.

 

Алгоритм сортировки массива по возрастанию методом прямого выбора может быть представлен так:

Просматривая массив от первого элемента, найти минимальный элемент и поместить
его на место первого элемента, а первый — на место минимального.
Просматривая массив от второго элемента, найти минимальный элемент и поместить
его на место второго элемента, а второй — на место минимального.
И так далее до предпоследнего элемента.
Ниже представлена программа сортировки массива символов по возрастанию

program sort;
uses crt;
const
SIZE = 7;
var
a: array[1..SIZE] of char;
min: integer; { номер минимального элемента в части
массива от i до верхней границы массива }
j: integer; { номер элемента, сравниваемого с минимальным }
buf: char; { буфер, используемый при обмене элементов массива }
i, k: integer;

begin
clrscr;
{ ввод массива}
for i := 1 to SIZE do begin
write('El-t #', i , ': ');
readLn (a[i]); {заполняем массив}
end;

for i := 1 to SIZE - 1 do
begin
{ поиск минимального элемента в части массива от а[1] до a[SIZE]}
min := i;
for j := i + 1 to SIZE do
if a[j] < a[min] then min := j;

{ поменяем местами a [min] и a[i] }
buf := a[i];
a[i] := a[min];
a[min] := buf;

{ вывод массива }
for k := 1 to SIZE do
write(a[k], '; ');
writeln;
end;
writeln('Otsortirovan!!!');
readkey;
end.

 

Вопрос №22

Обработка текстовой информации

В Паскале при работе с текстовой информацией существует возможность обработки одиночных символов типа Char и последовательности символов - строк типа String.
Символьный тип. Тип Char - это один из базовых типов языка, предназначен для хранения и обработки одного символа.

Множеством его значений есть отдельные символы (буквы, цифры, знаки), упорядоченные в соответствии с расширенным набором символов ASCII-кода. Переменная этого типа занимает 1 байт памяти. Благодаря тому что в памяти машины символы сохраняются в виде кодов (большим считается тот символ, чей код больше), их можно сравнивать. Для символов допустимы все операции сравнения: <, <=, =,>,> =, <>.
Описание данных символьного типа:
Const Name1 = 'v'; - описание символьной константы,
Var Name2: CHAR; - описание символьной переменной.
Как правило, значение для символьных переменных и констант задаются в кавычках, например, "f", '1 ',' + '. Также можно задать значение, указав непосредственно числовое значение ASCII-кода, поставив перед этим числовым кодом знак #, например, # 35, # 102.
В Паскале для работы с символьной информацией реализованы функции преобразования: CHR (N) - символ с кодом N, ORD (S) - код символа S. Также применяются функции, определяющие SUCC (S) - следующий символ, PRED (S) - предыдущий символ. Для этих функций выполняются следующие зависимости:
SUCC (S) = CHR (ORD (S) +1);
PRED (S) = CHR (ORD (S) -1).
Для латинских букв 'a' .. 'z' выполняется функция UPCASE (S), которая переводит эти литеры в верхний регистр 'A' .. 'Z'.
Строковый тип. Тип String - тип данных, предназначенный для хранения и обработки последовательности символов. Строку можно рассматривать как особую форму одномерного символьного массива.
Описание данных строчного типа:
Const Name1 = 'computer'; - описание строчной константы,
Var Name2: STRING; - описание строчной переменной,
Name3: STRING [20]; - описание строчной переменной заданной длины,
По умолчанию длина строчной переменной равна 255 символам, но можно ограничить длину строки с помощью явного указания длины строки.
В Паскале реализовано обработки строк двумя путями: проработка строки как единого целого и как объекта, который создается из отдельных символов.
Первый путь позволяет:
• присвоение строчной переменной за одну операцию целой строки символов, например, Name2: = 'computer'; Name3: = 'science';
• объединение строк в произвольном порядке с помощью операции «+» (операции связывания, объединения), например,
Name3: = 'computer' + 'science';
Name3: = Name2 + Name3;
• сравнение строк с помощью операций сравнения: <, <=, =,>,> =, <>, например,
If Name3 <> Name2 then write ('no');
Второй путь позволяет в каждый символа строки обращаться за его номером позиции как к элементу массива по индексу, например,
Name3: = Name2 [6] + Name2 [2] + Name2 [4];
Элемент с нулевым индексом содержит символ, код которого указывает на действительную длину данной строки.
В Паскале реализованы процедуры и функции для обработки строк. Текущую длину строки S можно узнать с помощью функции LENGTH (S).
Группа функций и процедур, направленная на проработку фрагментов строки:
• функция COPY (S, N, M) - копирование фрагмента строки S длиной M, начинается с позиции N;
• функция POS (S1, S) - поиск фрагмента S1 в строке S (получаем позицию, с которой начинается фрагмент S1 в строке S);
• функция CONCAT (S1, S2, ...) - объединение строк S1, S2, ...;
• процедура INSERT (S1, S2, M) - вставка фрагмента S1 в строку S2 с позиции M;
• процедура DELETE (S1, N, M) - изъятие части строки S1 длиной M, начиная с позиции N;
• процедура VAL (S, N, Code) - преобразование строки цифровых символов S в число N (параметр Code = 0, если строка S образован не из цифровых символов)
• процедура STR (N, S) - преобразование числа N в строку цифровых символов S.
Для сортировки символьных строк (например, по алфавиту) целесообразно создать массив символьных строк (массив типа String), что с учетом возможности использования операций сравнения для строк, позволит простым способом применять основные алгоритмы сортировки



Вопрос №23

Записи





sdamzavas.net - 2017 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...