Problema de programación típico
Clasificación de árboles
La clasificación de árboles es un proceso de dos pasos. Primero, los elementos se insertan en el árbol de búsqueda binario. En segundo lugar, utilice el recorrido en orden para recuperar elementos en orden.
Los árboles de búsqueda binarios no son un método atractivo de clasificación porque los montones requieren menos esfuerzo para hacer el mismo trabajo. En lugar de colocar elementos en un árbol de búsqueda binario, comenzamos formando un montón. Sin embargo, si los elementos están en un árbol de búsqueda binario, entonces un recorrido desordenado accederá a ellos en orden ordenado sin ninguna dificultad.
La clasificación de árboles es un método inverso. Primero, los elementos se integran en un árbol de búsqueda binario. En segundo lugar, los elementos que contiene deben recorrerse en orden. Para la misma carga de trabajo, la clasificación en montón consume muchos menos recursos que la clasificación en árbol binario. Entonces, al principio, construimos un montón de elementos en lugar de colocarlos en un árbol binario. Aún así, si los elementos ya están en un árbol binario, tómate un tiempo para ordenarlos usando un recorrido de orden intermedio...)
Fusionar clasificación
Dos sublistas, cada una ya están ordenados y se pueden combinar para formar una lista agregada ordenada de manera similar. Un método simple pero eficaz llamado mergesort comienza comparando pares de elementos, uno para cada sublista. El elemento más pequeño se agrega a la lista ordenada y se reemplaza por el siguiente elemento en su sublista. El elemento más pequeño se agrega a una lista ordenada y se reemplaza por el siguiente elemento en su sublista. Esto continúa hasta que no hay más elementos en la otra sublista, luego se agrega a la lista ordenada y se completa la clasificación
Esto suena bien cuando tienes dos sublistas ordenadas. Si no, el problema es decidir cómo empezar. Hay varias posibilidades.
Un enfoque es tratar los elementos individuales como una sublista ordenada de longitud 1. Estos pares de sublistas se combinan para producir una lista ordenada de longitud dos. Estos pares de listas luego se combinan para producir una lista ordenada de longitud 4. Este proceso continúa hasta que solo queda una lista ordenada. Este proceso se muestra en la Figura 4-8.
Tenga en cuenta que mergesort requiere dos matrices: r, que inicialmente contiene los datos que se van a ordenar, y t, una matriz del mismo tipo. La fusión se realiza en pares, primero de r a t, luego de r a t. t Vaya a r
Fusionar dos secuencias ordenadas para formar una nueva secuencia ordenada. Un método llamado ordenación por combinación puede implementar este proceso de manera simple y eficiente. Inicialmente, se comparan dos elementos de cada secuencia. El elemento más pequeño se coloca en la secuencia ordenada y su posición se reemplaza por el siguiente elemento de la secuencia. (¿Otra vez?...) Continúe este proceso hasta que no haya elementos en otra secuencia para fusionar, y luego este elemento se agrega a la secuencia ordenada y se completa la clasificación. Parece conveniente implementar este método de clasificación cuando ya hay dos secuencias de clasificación, pero cuando no hay secuencias de clasificación, la pregunta es cómo empezar: hay varias formas de hacerlo.
Un enfoque es tratar los elementos individuales como una secuencia ordenada de longitud 1. Después de fusionar dos de estas secuencias, se forma una secuencia ordenada de longitud 2. Dos secuencias de longitud 2 se fusionan para formar una secuencia ordenada de longitud 4. Este proceso continúa hasta que solo hay una secuencia ordenada. Como se muestra en la Figura 4-8.
Tenga en cuenta que la ordenación por combinación requiere dos punteros. La posición inicial de array-r es la posición inicial de la secuencia ordenada, al igual que array-t. Al comienzo de la combinación, el valor señalado por R es. en comparación con T (¿más El más pequeño está en la secuencia ordenada? ), entonces t a r Por lo tanto, la ordenación por combinación requiere espacio correspondiente a N elementos para solicitar 2xN.
.....No sé mucho al respecto.