1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
Семакин
Работа 3.6 Упр.27 ГДЗ Семакин 10 класс (Информатика)
Семакин, Хеннер, Шеина
10 класс
Автор
Семакин, Хеннер, Шеина

Работа 3.6 Упр.27 ГДЗ Семакин 10 класс (Информатика)

Задача

Примечание. Место помещения очередного элемента в отсортированную часть найти с помощью двоичного поиска. Двоичный поиск оформить в виде отдельной функции.

Подробный ответ

Нужно отсортировать массив по неубыванию методом вставок. Для каждого очередного элемента ищем место вставки в уже отсортированной части массива с помощью двоичного поиска, а затем сдвигаем элементы вправо и вставляем число на найденное место.

Ниже приведён вариант программы на Pascal.

var
a: array[1..100] of integer;
n, i, j, l, r, m, x: integer;

function BinSearch(l, r, x: integer): integer;
begin
while l <= r do
begin
m := (l + r) div 2;
if a[m] < x then
l := m + 1
else
r := m — 1;
end;
BinSearch := l;
end;

begin
read(n);
for i := 1 to n do
read(a[i]);

for i := 2 to n do
begin
x := a[i];
j := BinSearch(1, i — 1, x);
for m := i downto j + 1 do
a[m] := a[m — 1];
a[j] := x;
end;

for i := 1 to n do
write(a[i], ‘ ‘);
end.

Функция BinSearch возвращает позицию, на которую нужно вставить элемент x в отсортированную часть массива a[1..i-1]. После этого элементы сдвигаются вправо, и элемент вставляется на своё место.

Ответ

Программа на Pascal, реализующая сортировку вставками с двоичным поиском, приведена выше.



Общая оценка
3.7 / 5
Другие учебники
Другие предметы