Comment trouver le k-ième plus petit élément dans l'union de deux tableaux triés?

C'est un des devoirs de la question. Ils disent qu'il faut O(logN + logM)N et M sont les matrices de longueurs.

Laisser le nom de l'tableaux a et b. Évidemment, nous ne pouvons l'ignorer tous les a[i] et b[i] où i > k.
D'abord, nous allons comparer a[k/2] et b[k/2]. Laissez b[k/2] > a[k/2]. Par conséquent, nous ne pouvons ignorer aussi tous les b[i], où i > k/2.

Maintenant, nous avons tous a[i], où i < k et tous b[i], où i < k/2 pour trouver la réponse.

Quelle est la prochaine étape?

Étaient toutes ces étapes comprises dans l'affectation, ou sont les étapes ci-dessus le début de votre algorithme?
Les étapes ci-dessus sont les miennes.
Est O(logN + logM) seulement référence au temps qu'il faut pour trouver la kième élément? Peut prétraitement être fait pour l'union à l'avance?
Pas de pré-traitement est prévu.
Sont des doublons admis dans les tableaux?

OriginalL'auteur Michael | 2011-01-05