1. const n=20; var a:array[1..n] of integer; max,imax,i,j,t:integer; begin Randomize; Writeln('Исходный массив:'); for i:=1 to n do begin a[i]:=Random(51)-25; Write(a[i],' ') end; Writeln; max:=a[1]; imax:=1; for i:=2 to n do if a[i]>max then begin max:=a[i]; imax:=i; end; writeln('max = ',max); for i:=1 to imax-1 do for j:=1 to imax-i do if a[j]>a[j+1] then begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end; Writeln('Отсортированный массив:'); for i:=1 to n do Write(a[i],' '); Writeln; end.
2. const n=20; var a:array[1..n] of integer; min,imin,i,j,t:integer; begin Randomize; Writeln('Исходный массив:'); for i:=1 to n do begin a[i]:=Random(51)-25; Write(a[i],' '); end; Writeln; min:=a[1]; imin:=1; for i:=2 to n do if a[i]<min then begin min:=a[i]; imin:=i; end; writeln('min = ',min); for i:=1 to n-imin-1 do for j:=imin to n-i do if a[j]>a[j+1] then begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end; Writeln('Отсортированный массив:'); for i:=1 to n do Write(a[i],' '); Writeln; end.
3. const n=20; var a:array[1..n] of integer; max,imax,min,imin,i,j,t:integer; begin Randomize; Writeln('Исходный массив:'); for i:=1 to n do begin a[i]:=Random(51)-25; Write(a[i],' ') end; Writeln; max:=a[1]; imax:=1; min:=a[1]; imin:=1; for i:=2 to n do begin if a[i]>max then begin max:=a[i]; imax:=i; end; if a[i]<min then begin min:=a[i]; imin:=i; end; end; writeln('max = ',max,' min = ',min); if imax>imin then begin for i:=1 to imax-imin-1 do for j:=imin to imax-i do if a[j]>a[j+1] then begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end end else begin for i:=1 to imin-imax-1 do for j:=imax to imin-i do if a[j]<a[j+1] then begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end; end; Writeln('Отсортированный массив:'); for i:=1 to n do Write(a[i],' '); Writeln; end.
PascalABC.NET 3.3.5, сборка 1650 от 01.04.2018 Внимание! Если программа не работает, обновите версию!
procedure BubbleSort(a:array of integer; descending:Boolean:=False; // нужна ли сортировка по невозрастанию u:integer:=-1; // начальный индекс v:integer:=-1); // конечный индекс // Простая пузырьковая сортировка элементов с индексами с u по v begin // обеспечим корректность параметров u и v if u<0 then u:=0; var n:=a.Length; if (v<0) or (v>=n) then v:=n-1; if u>v then Swap(u,v) else if u=v then Exit; // собственно, сортировка if descending then begin // по невозрастанию for var i:=v-1 downto u do for var j:=u to i do if a[j]<a[j+1] then Swap(a[j],a[j+1]) end else begin for var i:=v-1 downto u do // по неубыванию for var j:=u to i do if a[j]>a[j+1] then Swap(a[j],a[j+1]) end end;
begin Write(': '); var a:=ArrRandom; a.Println; var (imin,imax):=(a.IndexMin,a.IndexMax); var b:=Copy(a); Write('1: '); BubbleSort(b,False,0,imax); b.Println; b:=Copy(a); Write('2: '); BubbleSort(b,False,imin); b.Println; b:=Copy(a); Write('3: '); BubbleSort(b,True,imax,imin); b.Println end.
a, b, c и x- разные числа, но x и x одинаковые