Сортировать нечетные числа с помощью прямого включения в одномерном массиве. Pascal...

0 голосов
40 просмотров

Сортировать нечетные числа с помощью прямого включения в одномерном массиве. Pascal abc.net
Четные элементы должны остаться на своем месте.


Информатика (475 баллов) | 40 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
// PascalABC.NET 3.2, сборка 1467 от 02.06.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=ArrRandom(ReadInteger('n='),-50,50); a.Println;
  var x:=a.Where(x->x.IsOdd).ToArray;
  for var i:=1 to x.Count-1 do begin
    var (j,l):=(i-1,x[i]);
    while (j>=0) do
      if x[j]>l then begin x[j+1]:=x[j]; j-=1 end
      else break;
    x[j+1]:=l
    end;
  var j:=0;
  for var i:=0 to x.Length-1 do begin
    while a[j].IsEven do j+=1;
    a[j]:=x[i]; j+=1
    end;
  a.Println;
end.

Пример
n= 15
49 10 3 44 -25 31 -18 -9 29 43 -24 -45 -19 45 -19
-45 10 -25 44 -19 -19 -18 -9 3 29 -24 31 43 45 49
(150k баллов)