Según su pregunta y comentario, parece que comenzará con un objeto Usuario con las siguientes características:
Usuario
- Ubicación actual
- Destino
- Clasificación
Cada vez que escribo un algoritmo, encuentro útil escribir primero los pasos antes de escribir cualquier código / pseudocódigo. Para sus necesidades, estos son los pasos que tomaría:
- Cómo definir una función para encontrar el producto de dígitos en Python usando recursividad
- Cómo probar la diferencia significativa entre dos algoritmos de clasificación
- Cómo encontrar la ruta de longitud máxima en un árbol binario T
- ¿Qué es recursivo en matemáticas?
- Cómo capturar información de color de un anime
- Obtenga una lista de los usuarios que desean ir al mismo destino.
- Iterar sobre esa lista para usuarios con una calificación similar.
- Si se encuentra una coincidencia, agregue el usuario coincidente a otra lista.
- Si la lista de posibles coincidencias tiene al menos 2 usuarios, devuelva la lista
Algoritmo usando C #:
Lista pública FindMatch (Usuario userToMatch) { List users = UserRepository.Where (x => x.Destination == userToMatch.Destination); List possibleMatches = new List (); foreach (usuario var en usuarios) { if (user.Rating == userToMatch.Rating) possibleMatches.Add (usuario); } if (possibleMatches.Length> = 2) { return possibleMatches; } lanzar una nueva Excepción ("No se encontró coincidencia"); } Usuario de clase pública { cadena pública CurrentLocation {get; conjunto; } Destino de cadena pública {get; conjunto; } public int Rating {get; conjunto; } }
La complejidad del tiempo algorítmico usando la Lista es O (n). Esto se puede mejorar a O (1) tiempo constante mediante el uso de la colección HashSet de .NET u optimizando la búsqueda de la lista (UserRepository).