Вставить значения в порядке от наименьшего к наибольшему в массив - PullRequest
0 голосов
/ 20 июня 2020

Мне нужно создать массив в регистре, который представляет собой последовательность натуральных чисел, они вставляются пользователем и не могут быть повторены. Моя проблема заключается в сортировке значений массива по мере их вставки в порядке возрастания. Я безуспешно пробовал этот код. Спасибо.

const
  MAX = 10;
type
  Natural = 0..MAXINT; 

  Secuencia = RECORD
    valores : ARRAY [1..MAX] OF Natural;
    tope : 0..MAX;
  END;
  
TipoResultado = (Fallo, Creado, Agregado);
  
Resultado = RECORD
    CASE quePaso : TipoResultado OF
    Fallo: ();
    Creado: ();
    Agregado: (posicion: Natural);
  END;


//Non-repeating value search function in array
Function BLineal(valor: Natural; sec: Secuencia ): boolean;
var i : integer;
begin
  i := 1;
  while (i <= sec.tope) and (sec.valores[i] <> valor) do
    i := i + 1;
     BLineal := i <= sec.tope
    end;

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

//Procedure ORDER 
Procedure OrdIns (var sec: Secuencia);
var
   i,j: integer;
   aux: Natural;
begin
  for i := 2 to sec.tope do begin
    j := i;
    while (j >= 2) and ((sec.valores[j]) < (sec.valores[j-1])) do
      begin
        aux:=sec.valores[j-1];
          sec.valores[j-1]:=sec.valores[j];
            sec.valores[j]:=aux;
              j := j - 1
         end
    end;
end;
...