В одномерном массиве размера 25 хранятся неупорядоченные числа. В нашем распоряжении имеется вспомогательный двумерный массив Res размером 7 (количество строк) на 5 (количество столбцов).
Доступ к элементам массива осуществляется с помощью специальных функций :
Comper (n1, n2, n3, n4, n5, Res, i ) – на вход функции подаются индексы элементов n1, n2, n3, n4, n5. В результате работы в i-ую строку массива Res записываются индексы упорядоченных по убыванию элементов.
Find(m, i) - находит номер первой строки, в которой в i-ом столбце стоит значение m
Определите, где располагаются три максимальных элемента в исходном массиве, используя для этого значения полученные в массиве Res после 7 вызовов функции Comper:
Comper (1, 2, 3, 4, 5, Res, 0)
Comper (6, 7, 8, 9, 10, Res, 1)
Comper (11, 12, 13, 14, 15, Res, 2)
Comper (16, 17, 18, 19, 20, Res, 3)
Comper (21, 22, 23, 24, 25, Res, 4)
Comper (Res[0,0], Res [1,0], Res [2,0], Res [3,0], Res [4,0], Res, 5)
Comper (Res[Find(Res[5,0], 0),1], Res [Find(Res[5,0], 0),2], Res [5,1], Res [Find(Res[5,1], 0),1], Res [5,2], Res, 6)
Пусть нумерация строк и столбцов начинается с 0.
Изначально элементы одномерного массива разбиваются на 5 групп по 5 элементов в соответствие с индексами. Далее 5 раз вызывается функция Comper в качестве аргументов индексы элементов из каждой группы и номера строк в двумерном массиве, что показано ниже. С помощью данных манипуляций мы получаем пять строк двумерного массива с отсортированными индексами всех элементов из одномерного массива.
Comper (1, 2, 3, 4, 5, Res, 0 )
Comper (6, 7, 8, 9, 10, Res, 1 )
Comper (11, 12, 13, 14, 15, Res, 2 )
Comper (16, 17, 18, 19, 20, Res, 3 )
Comper (21, 22, 23, 24, 25, Res, 4)
С помощью инструкции представленной ниже, мы поместим в 6 строку двумерного массива отсортированные по убыванию элементы. Где в качестве параметров выступают следующие элементы: первый элемент, который является максимальным элементом первой строки, второй элемент максимальный из второй строки и т.д.
Comper (Res[0,0], Res [1,0], Res [2,0], Res [3,0], Res [4,0], Res, 5 )
С помощью инструкции представленной ниже, мы поместим в 7 строку двумерного массива следующие отсортированные по убыванию элементы. Оговоримся, называя элемент первый, второй и т.д. мы говорим о элементах, которые указаны в качестве параметров ниже описанной инструкции. В качестве параметров инструкции выступают следующие элементы: Первый – следующий за максимальным элементом по величине и находящийся с максимальным в одной строке(речь идет о строках с 0 по 4). Второй – следующий за первым элементом по величине и находящийся с первым и максимальным в одной строке(речь идет о строках с 0 по 4). Третий – следующий за максимальным элементом по величине, но находящийся с максимальным в разных строках(речь идет о строках с 0 по 4). Четвертый – следующий за третьим элементом по величине и находящийся с третьим элементом в одной строке(речь идет о строках с 0 по 4). Пятый – следующий за третьим элементом по величине, но находящийся с третьим элементом в разных строках(речь идет о строках с 0 по 4).
Comper (Res[Find(Res[5,0], 0),1], Res [Find(Res[5,0], 0),2], Res [5,1], Res [Find(Res[5,1], 0),1], Res [5,2], Res, 6)
Очевидно, что при выполнении вышеописанных процедур, что с помощь 5 и 6 строк можно найти индексы трех максимальных элементов. Максимальные числа располагаются в элементах массива с индексами
Res[5,0], Res[6,0], Res[6,1].
Максимальные числа располагаются в элементах массива с индексами
Res[5,0], Res[6,0], Res[6,1]