Сортировка методом бинарных вставок - Pascal

Узнай цену своей работы

Формулировка задачи:

помогите решить задачу=)вот она:Дано масив цілих чисел. Скласти програму, яка відсортувала б його за зростанням (несуворим), використовуючи метод бінарних вставок. Результат виводити після кожної перестановки у масиві (між числами не менше 1 пробілу). Підрахувати кількість порівнянь та перестановок та вивести їх на екран. Після кожного обміну вивести елементи масиву через пробіл й перейти на новий рядок. Алгоритм даного методу сортування полягає у наступному: послідовно проглядаємо масив а1, …, аn-1 і кожний новий елемент ai вставляємо до вже впорядкованої сукупності a0, …, ai-1. Причому, місце вставки нового елементу визначається за алгоритмом поділу навпіл: якщо точної середини послідовність не має, то завжди обирають лівий центральний елемент, тобто middle:=(left+right) div 2

Решение задачи: «Сортировка методом бинарных вставок»

textual
Листинг программы
procedure BinaryInsertionSort(var Arr : array of Real; N : Integer);
var
    B,C,E,I,J,K   :   Integer;
    Tmp :   Real;
begin
    i:=2;
    repeat
        b:=1;
        e:=i-1;
        c:=((b+e) div 2);
        while b<>c do
        begin
            if Arr[c-1]>Arr[i-1] then e:=c
            else b:=c;
            c:=((b+e) div 2);
        end;
        if Arr[b-1]<Arr[i-1] then
        begin
            if Arr[i-1]>Arr[e-1]
               then b:=e+1
               else b:=e;
        end;
        k:=i;
        Tmp:=Arr[i-1];
        while k>b do
        begin
            Arr[k-1]:=Arr[k-1-1];
            dec(k)
        end;
        Arr[b-1]:=Tmp;
        inc(i);
    until not(i<=n);
end;

Объяснение кода листинга программы

Данный код представляет собой реализацию метода бинарных вставок для сортировки массива целых чисел. В начале кода объявляются необходимые переменные: B, C, E, I, J и K, которые будут использоваться для выполнения операций сортировки. Также объявляется переменная Tmp, которая будет использоваться для временного хранения значения элемента массива. Далее идет цикл repeat, который выполняется до тех пор, пока не будет достигнуто условие i <= n, то есть пока не будет отсортировано не более 20 элементов массива. Внутри цикла повторяется блок кода, который выполняется на каждой итерации. В этом блоке сначала определяется значение переменной b как 1, а затем e как i-1. Затем вычисляется среднее значение между b и e и сохраняется в переменной c. Затем выполняется цикл while, который продолжается до тех пор, пока значение Arr[c-1] больше Arr[i-1]. Если это условие выполняется, то значение переменной e устанавливается равным c. Если же значение Arr[i-1] меньше Arr[e-1], то значение переменной b устанавливается равным c. После этого вычисляется новое значение для переменной c, как среднее значение между b и e. После этого выполняется блок if, который проверяет, если Arr[b-1] меньше Arr[i-1], то значение переменной b устанавливается равным e+1. Если же Arr[i-1] больше Arr[e-1], то значение переменной b устанавливается равным e. Затем выполняется цикл while, который повторяется до тех пор, пока k больше b. Внутри этого цикла массив Arr сдвигается влево на одну позицию, а значение Arr[k-1] заменяется на Arr[k-1-1]. Затем значение k уменьшается на 1. После завершения цикла while выполняется последний блок if, который проверяет, если i больше n, то значение Arr[b-1] заменяется на Tmp. Это позволяет вставить элемент Tmp в массив на правильное место. Наконец, значение i увеличивается на 1, и цикл повторяется до тех пор, пока не будет достигнуто условие i <= n. Таким образом, данный код реализует метод бинарных вставок для сортировки массива целых чисел.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы