Bonjour,
pour les besoins d'un comparateur d'offre pour un site web, je dois améliorer un algorithme. Voici le problème :
j'ai une liste A d'éléments numériques que nous appelerons Ai, i<N
et une liste B d'éléments numériques que nous appelerons Bj, j<N
On peut considérer que ces 2 listes sont triées par ordre croissant, i.e.
pour tout Ai, Ai<Ai+1
pour tout Bj, Bj<Bj+1
Je dois extraire une liste C constituée des 100 couples AiBj dont la somme Ai+Bj est la plus petite, i.e. telle que
Ck < Ck+1 ,k <= 100
La méthode la plus intuitive (et la moins efficace) consiste à constituer les N*N couples AiBj, à les trier et à en extraire les 100 premiers. Mais la complexité quadratique (O(n2)) de cette méthode pose un problème de performance. Est-il possible d'améliorer cet algorithme, et surtout existe-t-il un algorithme de complexité moindre qu'un algo en O(n2)?
Merci d'avance pour vos réponses futées
Partager