Для данной сортировки используем алгоритм сортировки слиянием
В начале разбиваем арбузы на 2 группы по 2Каждую группу взвешиваем и сортируем (т.е. всего 2 взвешивания)Теперь собираем вместе, сравниваем сначала более легкие арбузы и находим самый легкий (всего 3 взвешивания)Теперь сравниваем тяжелый арбуз, что в группе с самым легким и более легкий из другой группы, и определяем второй по легкости (всего 4 взвешивания)Потом взвешиваем оставшиеся арбузы и докладываем их по порядку (всего 5 взвешивания)
DIM m AS INTEGER, n AS INTEGER CLS INPUT "n,m=", n, m REDIM a(1 TO n, 1 TO m) AS INTEGER imin = 1: jmin = 1: imax = 1: jmax = 1 RANDOMIZE TIMER FOR i = 1 TO n FOR j = 1 TO m t = INT(51 * RND): a(i, j) = t PRINT t; IF a(imin, jmin) > t THEN imin = i: jmin = j END IF IF a(imax, jmax) < t THEN imax = i: jmax = j END IF NEXT j PRINT NEXT i PRINT "Sum="; imin + jmin + imax + jmax
Для данной сортировки используем алгоритм сортировки слиянием
В начале разбиваем арбузы на 2 группы по 2Каждую группу взвешиваем и сортируем (т.е. всего 2 взвешивания)Теперь собираем вместе, сравниваем сначала более легкие арбузы и находим самый легкий (всего 3 взвешивания)Теперь сравниваем тяжелый арбуз, что в группе с самым легким и более легкий из другой группы, и определяем второй по легкости (всего 4 взвешивания)Потом взвешиваем оставшиеся арбузы и докладываем их по порядку (всего 5 взвешивания)CLS
INPUT "n,m=", n, m
REDIM a(1 TO n, 1 TO m) AS INTEGER
imin = 1: jmin = 1: imax = 1: jmax = 1
RANDOMIZE TIMER
FOR i = 1 TO n
FOR j = 1 TO m
t = INT(51 * RND): a(i, j) = t
PRINT t;
IF a(imin, jmin) > t THEN
imin = i: jmin = j
END IF
IF a(imax, jmax) < t THEN
imax = i: jmax = j
END IF
NEXT j
PRINT
NEXT i
PRINT "Sum="; imin + jmin + imax + jmax
Тестовое решение
n,m=8,5
46 23 13 43 35
18 47 44 41 37
45 0 34 30 7
0 28 27 49 47
46 18 48 39 11
2 17 32 43 38
31 43 15 16 16
30 32 46 9 31
Sum= 13