Составить программу для сортировки массива А из 10 элементов по следующему принципу: четные элементы по возрастанию, а не четные по убыванию — Pascal(Паскаль)

VAR
  a:array[1..10]of integer;
  i,i1,tmp:integer;

BEGIN
{1). Создание исходного массива}
  writeln('Исходный массив:');
  randomize;
  for i:=1 to 10 do
    begin
    a[i]:=random(9);
    write('  ',a[i]);
    end;
  writeln;

{2). Сортировка исходного массива}
  for i:=1 to 10-1 do
  for i1:=i+1 to 10 do
    BEGIN
    if (a[i]>a[i1])and(a[i1] mod 2=0)and(a[i] mod 2=0) then
      begin
      tmp:=a[i];
      a[i]:=a[i1];
      a[i1]:=tmp;
      end;
    if (a[i]<a[i1])and(a[i1] mod 2=1)and(a[i] mod 2=1) then
      begin
      tmp:=a[i];
      a[i]:=a[i1];
      a[i1]:=tmp;
      end;
    END;

{3). Вывод отсортированного массива}
  writeln;
  writeln('Полученный массив:');
  for i:=1 to 10 do write('  ',a[i]);
END.

* переменная a — исходный массив с числом элементов 10
* переменные i, i1 — переменные для цикла
* переменная tmp — для временного хранения одного элемента массива.

Решение этой задачи я разбил на 3 части: создание исходного массива, сортировка исходного массива, вывод отсортированного массива.

Первая и третья части очень просты и могут быть записаны по разному. А вот о третьей части я расскажу.

Сортировка исходного массива
Для сортировки массивов разработано несколько методов. Метод сортировки, который используется в этой программе называется «Линейная сортировка» или «Сортировка отбором». Он заключается в том, что последовательно берется один элемент и сравнивается с оставшимися элементами массива. И в зависимости от условия сравнения этих элементов они меняются друг с другом местами.

Например: 2,5,1 — нужно отсортировать по возрастанию.
Используя данный метод сравниваем 1-й элемент со 2-м и 3-м элементами. Выясняем, что 2>1, поэтому меняем их местами, получим: 1,5,2. Теперь сравниваем 2-й элемент с 3-м элементом. Выясняем, что 5>2, поэтому меняем их местами и получим результат такой сортировки: 1,2,5.
Теперь когда знаем как сортировать элементы массива, можно писать программу для сортировки. Она будет выглядеть таким образом:

 ...
  for i:=1 to 10-1 do
  for i1:=i+1 to 10 do
    BEGIN
    if (a[i]>a[i1]) then
      begin
      tmp:=a[i];
      a[i]:=a[i1];
      a[i1]:=tmp;
      end;
    END;
  ...

При условии a[i]>a[i1] — эти элементы поменяются друг с другом местами.
Вот эта часть программы будет сортировать массив по возрастанию. Другую часть программы для сортировки по убыванию просто написать — заменив знак > на <.
Теперь для того чтобы отсортировать четные элементы массива нужно добавить к уже готовой части для сортировки, еще 2 условия. Первое условие, что сравниваемый элемент — четный. Второе условие, что оставшиеся элементы которые будут сравниваться с тем — тоже четные.
Для не четных элементов нужно добавить аналогичные 2 условия.

Leave a Comment

+ 37 = 42