• Разработать алгоритм методом пошаговой детализации и программу решения задачи, в которой отсортировать одномерный массив a[1..8], состоящий из элементов вещественного типа в порядке убывания методом «вставки». Исходные данные массива вводятся с клавиатуры.

Ответы 1

  • Считаем, что вначале данные неупорядочены. Полагаем, что первый элемент находится на своем месте, поэтому граница между отсортированными и неотсортированными элементами находится после первого элемента. На каждом шаге, начиная от границы, ищем максимальный элемент и определяем его место в отсортированной части последовательности, после чего сдвигаем необходимую часть отсортированных элементов вправо и производим вставку элемента на освободившееся место. Алгоритм выполняем до тех пор, пока не граница отсортированных данных не выйдет за границу массива.

    PascalABC.NET 3.4.2, сборка 1881 от 19.11.2018Внимание! Если программа не работает, обновите версию!

    procedure SortByInsert(a: array of real);

    // сортировка простыми вставками

    begin

     for var Граница := 1 to a.Length - 1 do

       if a[Граница - 1] < a[Граница] then

       begin

         // сдвиг вправо

         var (Элемент, Позиция) := (a[Граница], Граница - 1);

         while (Позиция >= 0) and (a[Позиция] < Элемент) do

           (a[Позиция + 1], Позиция) := (a[Позиция], Позиция - 1);

         // вставка на нужное место

         a[Позиция + 1] := Элемент

       end

    end;

    begin

     var a := ReadArrReal(8);

     SortByInsert(a); a.Println

    end.

    Пример2.9 -25 8.1 31.9 -30.9 20.9 47.6 6.647.6 31.9 20.9 8.1 6.6 2.9 -25 -30.9
    • Автор:

      jarvis93
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years