Задача Сортировка 1

Материал из PlusPi

Задача[править]

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

Решение[править]

Программа[править]

uses Crt;
type MyArray = array [1..100] of integer;
var n:integer;
    a:MyArray;

procedure InPut(var a:MyArray; n:integer);  {Вводим массив}
var i:integer;
begin
  for i:=1 to n do
  begin
    write('a[',i,']=');
    readln(a[i]);
  end;
end;

procedure OutPut(var a:MyArray; n:integer);   {Выводим массив}
var i:integer;
begin
  for i:=1 to n-1 do write(a[i],' ');
  writeln(a[n]);
end;

procedure Sort(var a:MyArray; n:integer); {Сортируем массив}
var i,j,k,temp:integer;
begin
 for i:= n downto 2 do
  begin
    k:=i;                                {считаем что элемент i минимален}
    for j := 1 to i do                   {находим минимальный элемент}
      if a[k] > a[j] then k:=j;
    writeln('Меняем минимальный a[',k,']=',a[k],' и последний a[',i,']=',a[i]);
    temp:=a[i];
    a[i]:=a[k];
    a[k]:=temp;
    OutPut(a,n);     {выводим массив после очередного этапа сортировки}
  end;
end;

function Check_Array(var a:MyArray;n:integer):boolean; {проверка упорядочености по убыванию}
var i:integer;
    flag:boolean;
begin
 i:=1;
 flag:=true;
 while (i<n) and flag do
   if a[i]<a[i+1] then flag:=false else Inc(i);
 Check_Array:=flag;
end;

begin
  clrscr;
  write('Введите количество элементов массива n:');
  readln(n);
  InPut(a,n);
  writeln('== Исходный массив ==');
  OutPut(a,n);
  if Check_array(a,n) then
    writeln('Массив упорядочен по убыванию')
  else
    begin
      writeln('== Сортировка ==');
      Sort(a,n);
      writeln('== Отсортированый массив ==');
      OutPut(a,n);
    end;
  readln;
end.

Примеры работы[править]

Пример №1

Введите количество элементов массива n:5
a[1]=10
a[2]=30
a[3]=20
a[4]=40
a[5]=50
== Исходный массив ==
10 30 20 40 50
== Сортировка ==
Меняем минимальный a[1]=10 и последний a[5]=50
50 30 20 40 10
Меняем минимальный a[3]=20 и последний a[4]=40
50 30 40 20 10
Меняем минимальный a[2]=30 и последний a[3]=40
50 40 30 20 10
Меняем минимальный a[2]=40 и последний a[2]=40
50 40 30 20 10
== Отсортированый массив ==
50 40 30 20 10

Пример №2

Введите количество элементов массива n:4
a[1]=9
a[2]=7
a[3]=3
a[4]=2
== Исходный массив ==
9 7 3 2
Массив упорядочен по убыванию