Estoy de acuerdo con Aloriel. Uno de los errores mayores de los informáticos es intentar reinventar la rueda cada vez que hacen un programa. Lo cual implica tener que testearla. Con lo fácil que es coger una rueda que tanta gente a usado y tienes la casi seguridad de que es bug-free !!!
Ahora mismo, por ejemplo, me encuentro implementando una versión del knn distribuida. Un compañero de mi laboratorio ya ha distribuido un algoritmo que tiene muchos puntos en común con el knn, entre el uso de la distancia. Lo primero que me dijo y lo primero que hize:”copia todo el código que te sea útil”