Пример 3.4. Элементы заданного числового массива a1, a2, ..., aN упорядочить по возрастанию.

Тест

Данные Результат
N=4 A=(5, 2, 7, 1) A=(1, 2, 5, 7)

 

Школьный АЯ 
алг Возрастание(арг цел N, арг рез 
                вещ таб
A[1:N])
нач цел i, j, вещ Tmp
  нц для i от 1 до N-1
    нц для j от i+1 до N
      ecли A[i] > A[j]
        то Tmp:=A[i]; A[i]:=A[j]; A[j]:=Tmp
      все
    кц
  кц
кон

Исполнение алгоритма 
 

i j A[i]>A[j] Массив A
1 2
3
4
+
-
+
2, 5, 7, 1
 
1, 5, 7, 2
2 3
4
-
+
 
1, 2, 7, 5
3 4 + 1, 2, 5, 7

 
Блок-схема (фрагмент) 


Turbo Pascal
Program Regulation;
  Uses Crt;
  Type Mas = Array [1..10] of Real;
  Var A       : Mas;
      i, j, N : Integer;
      Tmp     : Real;
   {--------------------------------------------}
 
Procedure Input; {описание процедуры ввода массива }
    Begin
      ClrScr;
      Write('Введите N = '); ReadLn(N);
      WriteLn('Введите элементы массива: ');
      For i := 1 to N do
        begin Write('A [ ' , i , ' ] = ');
              ReadLn(A[i])
        end;
    End; {of Input}
   {--------------------------------------------}
 
Procedure Regulate; {описание процедуры упорядочения по возрастанию}
    Begin
      For i := 1 to N-1 do
        For j := i+1 to N do
          If A[i] > A[j] then
            begin Tmp:=A[i]; A[i]:=A[j]; A[j]:=Tmp
            end;
    End; {of Regulate}
   {--------------------------------------------}
 
Procedure Output; {описание процедуры вывода результата}
    Begin
      WriteLn('Упорядоченный массив :');
      For i:=1 to N do Write( A[i] : 6 : 1);
      WriteLn; ReadLn
    End; {of Output}
   {--------------------------------------------}
BEGIN
  Input;    {вызов процедуры ввода массива }
  Regulate; {вызов процедуры упорядочения по возрастанию}
  Output    {вызов процедуры вывода результата}
END.
 
QBasic

CLS : INPUT "N = "; N : DIM A(N)
FOR i = 1 TO N
  PRINT "A(" ; i ; ") = " ;
  INPUT A(i)
NEXT i

FOR i = 1 TO N-1
  FOR j = i+1 TO N
    IF
A(i) > A(j) THEN Tmp=A(i) : A(i)=A(j) : A(j)=Tmp

  NEXT j
NEXT i

PRINT : PRINT "Упорядоченный массив :"
FOR i = 1 TO N
  PRINT A(i) ;
NEXT i : PRINT
END

Другие записи

10.06.2016. Пример 3.5. В массиве A(N, N) вычислить две суммы элементов, расположенных ниже и выше главной диагонали.
Тест Данные Результат N=3  S1=6  S2=9 Школьный АЯ алг Две суммы (арг цел N, арг вещ таб A[1:N, 1:N], рез вещ S1, S2)   надо | S1 = сумма элементов ниже главной диагонали       …