[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 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
 

[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]