Задание. Проанализируйте заданный алгоритм согласно варианту. Проделайте в тетради следующую работу: исполните алгоритм при наборах данных, позволяющих отследить прохождение по каждой ветви алгоритма. Задайте массив не менее чем из 10 элементов. Набор данных должен быть необходимо достаточным. Запишите исходные данные, промежуточные данные и результат работы для каждого из выбранных наборов значений величин. Дополнительное задание: если сможете, сформулируйте условие задачи, которая решается с помощью представленного алгоритма.
Program S; Var N, I, J, K, Pr : Integer; A : Array [1..30] Of Integer; Begin Write('Введите количество элементов: '); ReadLn(N); For I := 1 To N Do Begin Write('Введите A[', I, '] '); Readln(A[I]); End; WriteLn; For I := 1 To N - 1 Do Begin K := I; For J := I + 1 To N Do If A[J] <= A[K] Then K := J; Pr := A[I]; A[I] := A[K]; A[K] := Pr; End; For I := 1 To N Do Write(A[I], ' '); End.
В данном блоке программы
Write('Введите количество элементов: '); ReadLn(N); For I := 1 To N Do Begin Write('Введите A[', I, '] '); Readln(A[I]); End; WriteLn;осуществляется ввод данных.
Пусть введено значение N=10 (согласно заданию); элементы массива равны соответственно в порядке возрастания номеров (с 1-го по 10-й)
-12 0 33 -33 100 22 77 -87 -1 6
Исполним блок программы, где выполняется преобразование массива. Результаты занесем в таблицу.
For I := 1 To N - 1 Do Begin K := I; For J := I + 1 To N Do If A[J] <= A[K] Then K := J; Pr := A[I]; A[I] := A[K]; A[K] := Pr; End;
Получаем
I i<=N-1 j j<=N k A[J]<=A[K] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] Pr 1 True 2 True 1 False -12 0 33 -33 100 22 77 -87 -1 6 0 1 True 3 True 1 False -12 0 33 -33 100 22 77 -87 -1 6 0 1 True 4 True 4 True -12 0 33 -33 100 22 77 -87 -1 6 0 1 True 5 True 4 False -12 0 33 -33 100 22 77 -87 -1 6 0 1 True 6 True 4 False -12 0 33 -33 100 22 77 -87 -1 6 0 1 True 7 True 4 False -12 0 33 -33 100 22 77 -87 -1 6 0 1 True 8 True 8 True -12 0 33 -33 100 22 77 -87 -1 6 0 1 True 9 True 8 False -12 0 33 -33 100 22 77 -87 -1 6 0 1 True 10 True 8 False -12 0 33 -33 100 22 77 -87 -1 6 0 1 True 10 True 8 False -12 0 33 -33 100 22 77 -87 -1 6 -12 1 True 10 True 8 False -87 0 33 -33 100 22 77 -87 -1 6 -12 1 True 10 True 8 False -87 0 33 -33 100 22 77 -12 -1 6 -12 2 True 3 True 2 False -87 0 33 -33 100 22 77 -12 -1 6 -12 2 True 4 True 4 True -87 0 33 -33 100 22 77 -12 -1 6 -12 2 True 5 True 4 False -87 0 33 -33 100 22 77 -12 -1 6 -12 2 True 6 True 4 False -87 0 33 -33 100 22 77 -12 -1 6 -12 2 True 7 True 4 False -87 0 33 -33 100 22 77 -12 -1 6 -12 2 True 8 True 4 False -87 0 33 -33 100 22 77 -12 -1 6 -12 2 True 9 True 4 False -87 0 33 -33 100 22 77 -12 -1 6 -12 2 True 10 True 4 False -87 0 33 -33 100 22 77 -12 -1 6 -12 2 True 10 True 4 False -87 0 33 -33 100 22 77 -12 -1 6 0 2 True 10 True 4 False -87 -33 33 -33 100 22 77 -12 -1 6 0 2 True 10 True 4 False -87 -33 33 0 100 22 77 -12 -1 6 0 3 True 4 True 4 True -87 -33 33 0 100 22 77 -12 -1 6 0 3 True 5 True 4 False -87 -33 33 0 100 22 77 -12 -1 6 0 3 True 6 True 4 False -87 -33 33 0 100 22 77 -12 -1 6 0 3 True 7 True 4 False -87 -33 33 0 100 22 77 -12 -1 6 0 3 True 8 True 8 True -87 -33 33 0 100 22 77 -12 -1 6 0 3 True 9 True 8 False -87 -33 33 0 100 22 77 -12 -1 6 0 3 True 10 True 8 False -87 -33 33 0 100 22 77 -12 -1 6 0 3 True 10 True 8 False -87 -33 33 0 100 22 77 -12 -1 6 33 3 True 10 True 8 False -87 -33 -12 0 100 22 77 -12 -1 6 33 3 True 10 True 8 True -87 -33 -12 0 100 22 77 33 -1 6 33 4 True 5 True 4 False -87 -33 -12 0 100 22 77 33 -1 6 33 4 True 6 True 4 False -87 -33 -12 0 100 22 77 33 -1 6 33 4 True 7 True 4 False -87 -33 -12 0 100 22 77 33 -1 6 33 4 True 8 True 4 False -87 -33 -12 0 100 22 77 33 -1 6 33 4 True 9 True 9 True -87 -33 -12 0 100 22 77 33 -1 6 33 4 True 10 True 9 False -87 -33 -12 0 100 22 77 33 -1 6 33 4 True 10 True 9 False -87 -33 -12 0 100 22 77 33 -1 6 0 4 True 10 True 9 False -87 -33 -12 -1 100 22 77 33 -1 6 0 4 True 10 True 9 False -87 -33 -12 -1 100 22 77 33 0 6 0 5 True 6 True 6 True -87 -33 -12 -1 100 22 77 33 0 6 0 5 True 7 True 6 False -87 -33 -12 -1 100 22 77 33 0 6 0 5 True 8 True 6 False -87 -33 -12 -1 100 22 77 33 0 6 0 5 True 9 True 9 True -87 -33 -12 -1 100 22 77 33 0 6 0 5 True 10 True 9 False -87 -33 -12 -1 100 22 77 33 0 6 0 5 True 10 True 9 False -87 -33 -12 -1 100 22 77 33 0 6 100 5 True 10 True 9 False -87 -33 -12 -1 0 22 77 33 0 6 100 5 True 10 True 9 True -87 -33 -12 -1 0 22 77 33 100 6 100 6 True 7 True 6 False -87 -33 -12 -1 0 22 77 33 100 6 100 6 True 8 True 6 False -87 -33 -12 -1 0 22 77 33 100 6 100 6 True 9 True 6 False -87 -33 -12 -1 0 22 77 33 100 6 100 6 True 10 True 10 True -87 -33 -12 -1 0 22 77 33 100 6 100 6 True 10 True 10 True -87 -33 -12 -1 0 22 77 33 100 6 22 6 True 10 True 10 True -87 -33 -12 -1 0 6 77 33 100 6 22 6 True 10 True 10 True -87 -33 -12 -1 0 6 77 33 100 22 22 7 True 8 True 8 True -87 -33 -12 -1 0 6 77 33 100 22 22 7 True 9 True 8 False -87 -33 -12 -1 0 6 77 33 100 22 22 7 True 10 True 10 True -87 -33 -12 -1 0 6 77 33 100 22 22 7 True 10 True 10 True -87 -33 -12 -1 0 6 77 33 100 22 77 7 True 10 True 10 True -87 -33 -12 -1 0 6 22 33 100 22 77 7 True 10 True 10 True -87 -33 -12 -1 0 6 22 33 100 77 77 8 True 9 True 8 False -87 -33 -12 -1 0 6 22 33 100 77 77 8 True 10 True 8 False -87 -33 -12 -1 0 6 22 33 100 77 77 8 True 10 True 8 False -87 -33 -12 -1 0 6 22 33 100 77 33 8 True 10 True 8 False -87 -33 -12 -1 0 6 22 33 100 77 33 8 True 10 True 8 False -87 -33 -12 -1 0 6 22 33 100 77 33 9 True 10 True 10 True -87 -33 -12 -1 0 6 22 33 100 77 33 9 True 10 True 10 True -87 -33 -12 -1 0 6 22 33 100 77 100 9 True 10 True 10 True -87 -33 -12 -1 0 6 22 33 77 77 100 9 True 10 True 10 True -87 -33 -12 -1 0 6 22 33 77 100 100
При выводе в блоке
For I := 1 To N Do Write(A[I], ' ');получаем
-87 -33 -12 -1 0 6 22 33 77 100
Таким образом, данная программа осуществляет сортировку массива в порядке неубывания.
© А.П. Шестаков, 2009