Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
procedure TForm1.Button1Click(Sender: TObject);
Const
SIZE=5;
Var
a: array [1..SIZE] of integer;
k:integer; // текущий элемент массива
i:integer; // индекс для ввода и вывода массива
changed:boolean; // TRUE, если в текущем цикле были обмены
buf:integer; // буфер для обмена элементами массива
Begin
// ввод массива
for i:=1 to SIZE do
a[i]:= StrToInt(StringGrid1.Cells[i-1, 0]);
label2.caption:='';
// сортировка массива
Repeat
Changed:=FALSE; // пусть в текущем цикле нет обменов
for k:=1 to SIZE-1 do
if a[k] > a[k+l] then
begin // обменяем k-й и k+1-й элементы
buf:= a[k]; a[k]:= a[k+1]; a[k+1]:= buf;
changed:= TRUE;
end;
// вывод массива
for i:=l to SIZE do
Label2.caption:=label2.caption+' '+IntToStr(a[i]);
Label2.caption:=label2.caption+#13;
until not changed; // если не было обменов, значит
// массив отсортирован
Label2.caption:=label2.caption+#13+'Maccив отсортирован.';
end;
Следует отметить, что максимальное необходимое количество циклов проверки соседних элементов массива равно количеству элементов массива минус один. Вместе с тем возможно, что массив реально будет упорядочен за меньшее число циклов. Например, последовательность чисел 5 1 2 3 4, если ее рассматривать как представление массива, будет упорядочена за один цикл, и выполнение оставшихся трех циклов не будет иметь смысла.
Поэтому в программу введена логическая переменная changed, которой перед выполнением очередного цикла присваивается значение FALSE. Процесс сортировки (цикл repeat) завершается, если после выполнения очередного цикла проверки соседних элементов массива (цикл for) ни один элемент массива не был обменен с соседним, и, следовательно, массив уже упорядочен.
Рис. 5.19. Пример работы программы сортировки массива методом обмена
На рис. 5.19 приведено диалоговое окно программы сортировки массива методом обмена после завершения процесса сортировки.
Дата публикования: 2015-01-14; Прочитано: 228 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!