Ordenar por partición

Otra clasificación de uso común se denomina ordenación por partición. Así es cómo funciona:

Los nombres no se ordenan al colocarlos antes o después de un pivote. Para lista{Emma, Olivia, Sophia, Isabella, Ava, Mia, Emily, Abigail}, este es el estado después de la primera división utilizando el pivote: el pivote es Emma, la lista antes del pivote es {Ava, Abigail} y la lista después del pivote es {Olivia, Sophia, Isabella, Mia, Emily}. Luego, el proceso de clasificación continúa en estas dos listas desordenadas más pequeñas.
  1. Explora la ordenación de partición antes de escribir cualquier código. Con tu clase, ponte de pie y forma una fila. Luego, sigue el proceso de ordenación de partición para ordenar a todos, de menor a mayor, por el número de la dirección de su casa.
  2. ¿Cómo es la ordenación de partición un ejemplo de recursividad? ¿Cuál es el caso base?

Para escribir un bloque de ordenar por partición en Snap!, necesitarás código para un caso base y código que siga los pasos de la ordenación por partición.

  1. Deberás descubrir cómo colocar los elementos en las tres categorías y cómo crear una lista final para la salida.
    Crea el reportero recursivo ordenar por partición. Su salida, para cualquier lista, debe ser la misma que la salida para ordenar por selección.
Por ejemplo, supongamos que ayer tenía una gran lista ordenada y hoy agrega algunos elementos nuevos, por lo que necesita volver a ordenar la lista. Un algoritmo de ordenamiento de propósito general no aprovechará el carácter que esté casi en orden de su entrada. Pero la ordenación por inserción, un algoritmo que es lento en general, maneja este caso especial rápidamente.

¿Por qué hay diferentes algoritmos de ordenamiento? Algunos algoritmos de ordenación tardan más en ejecutarse que otros, pero incluso un algoritmo que es lento en general puede ser útil en casos especiales.

  1. Aquí también puedes utilizar una lista larga de nombres.
    Crea una lista de 500 elementos de números aleatorios y luego ordénala usando los tres algoritmos de ordenación que creaste en esta práctica de laboratorio. Toma nota del tiempo:
    fijar(listalarga) a (lista vacía); repetir(500){añadir(número al azar entre(1) y (2000) a (listalarga)}; reiniciar cronómetro; decir(ordenar(listalarga)); fijar(tiempo) a (cronómetro)
  2. ¿Qué algoritmo fue el más rápido? ¿Por qué podría este tipo de algoritmo funcionar más rápido?