Напишите программу, работающую с одним массивом из 10 элементов целочисленного типа. программа просит пользователя заполнить массив целыми значениями, затем упорядочивает этот массив по возрастанию, используя сортировку методом простого выбора. после этого программа просит пользователя ввести одно целое значение, и, используя алгоритм двоичного поиска, определяет, имеется ли данное значение в массиве. в процессе сортировки программа считает, сколько раз производились перестановки элементов (обмен значениями двух разных элементов считается за одну перестановку), и сколько раз производились сравнения значений элементов массива с какими либо другими значениями. количество сравнений и перестановок выводится на экран перед завершением работы программы. pascal abc

Dgj8 Dgj8    1   27.08.2019 19:40    0

Ответы
AsunaUmi AsunaUmi  05.10.2020 23:19
Const
   N = 10;
Var
   A:array[1..N] of integer;
   i,j,M,B,C,p,s:integer;
Begin
Randomize;
{Заполнение и вывод}
Write('Исходный массив:');
For i:= 1 to N do
    Begin
    A[i]:=random(N);
    Write(' ',A[i]);
    End;
WriteLn;
{Сортировка}
p:=0;
For i:= 1 to N do
    Begin
    M:=i;
    For j:= i+1 to N do
        if A[j]<A[M] then M:=j;
    if M<>i then
       Begin
       B:=A[M];
       A[M]:=A[i];
       A[i]:=B;
       p:=p+1;
       {Вывод каждого шага сортировки}
       Write('Перестановка №',p,':');
       For j:= 1 to N do
           Write(' ',A[j]);
       WriteLn;
       End;
    End;
WriteLn;
Write('Отсортированный массив:');
For i:= 1 to N do
    Write(' ',A[i]);
{Бинарный поиск}
WriteLn;
Write('Введите число: ');ReadLn(C);
m:=N div 2;
i:=1;
j:=N;
s:=0;
While (A[m]<>C)and(i<=j) do
   Begin
   if C > A[m] then i:=m+1
   else j:=m-1;
   s:=s+1;
   m:=(i+j) div 2;
   End;
WriteLn;
if A[m]=C then WriteLn('В массиве есть данное число')
else WriteLn('В массиве нет данного числа');
WriteLn('Кол-во перестановок за сортировку: ',p);
WriteLn('Кол-во сравнений за поиск: ',s);
End.

Примеры:
Исходный массив: 0 4 5 4 1 2 6 7 0 7
Перестановка №1: 0 0 5 4 1 2 6 7 4 7
Перестановка №2: 0 0 1 4 5 2 6 7 4 7
Перестановка №3: 0 0 1 2 5 4 6 7 4 7
Перестановка №4: 0 0 1 2 4 5 6 7 4 7
Перестановка №5: 0 0 1 2 4 4 6 7 5 7
Перестановка №6: 0 0 1 2 4 4 5 7 6 7
Перестановка №7: 0 0 1 2 4 4 5 6 7 7

Отсортированный массив: 0 0 1 2 4 4 5 6 7 7
Введите число: 3

В массиве нет данного числа
Кол-во перестановок за сортировку: 7
Кол-во сравнений за поиск: 4

Исходный массив: 4 4 1 3 4 4 5 0 7 2
Перестановка №1: 0 4 1 3 4 4 5 4 7 2
Перестановка №2: 0 1 4 3 4 4 5 4 7 2
Перестановка №3: 0 1 2 3 4 4 5 4 7 4
Перестановка №4: 0 1 2 3 4 4 4 5 7 4
Перестановка №5: 0 1 2 3 4 4 4 4 7 5
Перестановка №6: 0 1 2 3 4 4 4 4 5 7

Отсортированный массив: 0 1 2 3 4 4 4 4 5 7
Введите число: 5

В массиве есть данное число
Кол-во перестановок за сортировку: 6
Кол-во сравнений за поиск: 2
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика