В
Все
У
Українська література
Г
Геометрия
Д
Другие предметы
Э
Экономика
Г
География
О
ОБЖ
М
Математика
М
МХК
Х
Химия
Қ
Қазақ тiлi
Л
Литература
У
Українська мова
О
Обществознание
Ф
Физика
А
Английский язык
А
Алгебра
И
История
Б
Беларуская мова
Б
Биология
М
Музыка
П
Право
И
Информатика
П
Психология
В
Видео-ответы
Н
Немецкий язык
Ф
Французский язык
О
Окружающий мир
Р
Русский язык
KatyaKorytnaya
KatyaKorytnaya
17.03.2023 13:02 •  Информатика

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

Ответ:
SlowMoe
SlowMoe
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
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?