1
X[1..N], y[1..M] - одномерные массивы n, m - количество элементов в массивах
ВВОД: n,m, x[1..n], y[1..m]
При нахождении общего элемента массивов мы увеличиваем количество общих элементов, меняем i, j, чтобы продолжать сравнение не с первых элементов массивов снова, а с элементов больших по величине
K = K +1
i = i + 1
r = j
j = j + 1
i = 1 K = 0 j = 1 r = 1
i, j - текущие номера элементов массивов x[1..n] и y[1..m] K - количество общих элементов массивов r - вспомогательная переменная, запоминающая номер последнего на данный момент общего элемента в массиве y[1..m]
i<=n
-
+
j<=m
i = i + 1
j = r
-
ВЫВОД: К
+
x[i]=y[j]
+
1
КОНЕЦ
-
j = j + 1
Задание9: Известно, что некоторое число содержится в каждом из трех
целочисленных
неубывающих массивов
,
Найти одно из этих чисел.
Р
НАЧАЛО
ВВОД: n,m,k, x[1..n], y[1..m],z[1..k]
i = 1
P = 0 Q = m
P <= Q
S = (P+Q)div2
y[S] < x[i]
y[S ]= x[i]
Q = S-1
P = S+1
P <= Q
S = (P+Q)div2
z[S ]= x[i]
z[S] < x[i]
P = S+1
Q = S-1
1
1
2
ешение: В массивах x[1..n], y[1..m] и z[1..k] содержится хотя бы один общий элемент. Можно сначала для элемента x[i] найти равный ему элемент в массиве y[1..m] методом бинарного поиска. Потом следует искать такой же элемент в последнем массиве z[1..k]. Если такого нет, то берется элемент x[i+1] и алгоритм повторяется. Так как общий элемент всех трех массивов точно есть, то окончание массива x[1..n] можно не проверять.
X[1..N], y[1..M], z[1..K] - одномерные массивы n, m, k - количество элементов в массивах
i = i + 1
P = 0 Q = k
2
Вывод: X[I]
НАЧАЛО
i - текущий номер элемента массива x[1..n]
P,Q - начало и конец части массива, в которой может находится x[i]
Условие, что для элемента x[i] в массиве y[1..m] существует равный элемент
S - вспомогательная переменная, середина части массива
+
+
+
+
+
+
-
-
-
-
-
-
