¿Cuál es un ejemplo de un buen algoritmo que se puede usar para unir a diferentes usuarios dentro de un determinado radio en cualquier ubicación según sus preferencias?

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:

  1. Obtenga una lista de los usuarios que desean ir al mismo destino.
  2. Iterar sobre esa lista para usuarios con una calificación similar.
    1. Si se encuentra una coincidencia, agregue el usuario coincidente a otra lista.
  3. 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).