¿Es esa pitón? Elimine todos los parámetros que no son realmente parámetros primero, como “Base” o “índice”. (Sugerencia: si su función siempre se llamará con el mismo valor para alguna variable, entonces esa variable no es realmente un parámetro. Conviértalo en una variable local).
Ahora piense si su función es realmente correcta. Tal vez hay alguna propiedad que siempre se mantiene en puntos cruciales, como “la lista ‘newList’ siempre está ordenada y contiene los primeros elementos de mi lista original”. Luego, cuando regrese, la longitud de newList es la misma que la longitud de oldList y, por lo tanto, es una lista ordenada que contiene los mismos elementos que la lista anterior. O tal vez su código no es correcto, y solo funciona para el único ejemplo en el que ha intentado. ¡Es bueno saber (o al menos tener una fuerte intuición) cuál de los dos es!
Ahora piense en cuántos pasos se necesitarían para ordenar una lista. Es fácil descubrir la lista que tiene, pero sería interesante encontrar una fórmula genérica. ¿De qué dependería? Una vez que tenga la fórmula, puede preguntarse si su algoritmo será adecuado para entradas realmente grandes.
- ¿Cuál sería un buen método o algoritmo para predecir el ganador de una carrera de caballos, dada una gran cantidad de información sobre las carreras de caballos?
- ¿Por qué recibo un error SIGSEGV en el tamiz segmentado de Eratóstenes (PRIME1)?
- ¿Cuál es el enfoque para resolver GSS1 y GSS3 en SPOJ usando árboles de segmentos?
- ¿Por qué se utiliza la ordenación del montón?
- Cómo aprender estructuras de datos y algoritmos de manera efectiva para que pueda ser mejor en la programación competitiva a nivel principiante
Entonces te preguntarás si hay mejores algoritmos que los tuyos. Bueno, hay (y bastantes famosos). ¿Quizás elegir un valor y colocarlo en su posición correcta no es la mejor idea? ¿Tal vez pueda dividir el problema en subproblemas de igual tamaño, que pueden combinarse en una solución completa muy rápidamente? Tal vez hay un enfoque completamente diferente?
Después de encontrar una manera de mejorar el algoritmo de esa manera, descubre que su programa aún no se ejecuta rápidamente. Ahora es el momento de abrir un generador de perfiles. Con eso, puede darse cuenta de que su programa pasa mucho tiempo al iterar sobre su lista, o al insertar y agregar objetos en su nueva lista. ¿Quizás la lista estándar de Python no es la manera perfecta de hacer las cosas? ¿Quizás no debería iterar sobre la lista con índices, sino a través de la iteración de la lista incorporada? ¡Preguntas sobre preguntas!