Изменения

Перейти к: навигация, поиск
Варианты решения
'''int''' i = random(0 .. n - 1)
'''int''' j = (k - 1) - i
 
<font color=green> // чтобы сохранить инвариант сделаем A[-1] = -INF и A[n] = +INF
B[-1] = -INF и B[m] = +INF </font> 
'''int''' Ai_left = ((i == 0) ? INT_MIN : A[i-1])
'''int''' Ai = ((i == n) ? INT_MAX : A[i])
'''int''' Bj_left = ((j == 0) ? INT_MIN : B[j-1])
'''int''' Bj = ((j == m) ? INT_MAX : B[j])
 
'''if''' (Bj_left < Ai && Ai < Bj):
'''return''' Ai
'''else if''' (Ai_left < Bj && Bj < Ai):
'''return''' Bj
 
'''if''' (Ai < Bj):
'''return''' findKthOrderStatistic(A + i + 1, n - i - 1, B, j, k- i - 1)
'''else'''
'''return''' findKthOrderStatistic(A, i, B + j + 1, m - j - 1, k - j - 1)
Анонимный участник

Навигация