Ordenamiento Quicksort (Rápido!) en Java

codigofacilito
31 Mar 201220:20

Summary

TLDREn este tutorial de Java, el instructor Jorge presenta el método de ordenamiento quick sort, un algoritmo eficiente y recomendado para ordenar secuencias de números. Jorge explica que, a diferencia de otros métodos como el de burbuja o inserción, quick sort utiliza recursividad y puede ser más difícil de comprender inicialmente, pero su eficiencia lo hace ideal para proyectos que requieran ordenar grandes cantidades de datos. El video incluye una demostración detallada de cómo funciona el algoritmo con punteros y un pivote, así como una guía para implementarlo en código. Jorge anima a los estudiantes a practicar y comprender completamente el método, destacando su importancia en la programación y su ventaja frente a otros algoritmos de ordenamiento.

Takeaways

  • 🎓 El método quick sort es un algoritmo de ordenamiento muy eficiente para secuencias de números.
  • 🔄 Quick sort utiliza recursividad y puede ser más complicado de entender en comparación con otros métodos de ordenamiento.
  • 📌 Se emplean tres variables clave en quick sort: dos punteros (izquierdo y derecho) y un pivote.
  • 🔢 El pivote es un número de referencia que ayuda a ordenar el arreglo; los números se organizan en torno a él.
  • ➡️ Los punteros se mueven a través del arreglo comparando cada número con el pivote y moviendo los elementos a las posiciones correctas.
  • 🔄 El proceso se repite recursivamente hasta que todos los sub-arreglos están ordenados.
  • 📈 Quick sort es más rápido que métodos como el de burbuja o inserción, lo que lo hace ideal para grandes conjuntos de datos.
  • 📝 El código de quick sort puede ser difícil de seguir, pero la práctica y la comprensión del proceso son clave para su implementación.
  • 🤔 Se recomienda practicar con diferentes secuencias de números para comprender y dominar el método.
  • 👍 Aunque quick sort es eficiente, también es importante conocer otros métodos de ordenamiento como burbuja o inserción.
  • 💡 El autor del tutorial, Jorge, ofrece ayuda adicional para resolver dudas a través de Twitter o mensajes privados.
  • 📚 El tutorial es una herramienta valiosa para aprender y entender el método quick sort y su implementación en proyectos.

Q & A

  • ¿Qué método de ordenamiento se discute en el tutorial?

    -El tutorial trata sobre el método de ordenamiento quick sort en Java.

  • ¿Por qué se dice que el método quick sort es más eficiente que otros métodos?

    -El método quick sort es más eficiente porque utiliza la recursividad y puede manejar grandes secuencias de números de manera más rápida y eficaz en comparación con métodos como el de burbuja o el de inserción.

  • ¿Qué son los punteros en el contexto del método quick sort?

    -Los punteros son variables que apuntan a los extremos de la secuencia o arreglo que se está ordenando y se utilizan para realizar el ordenamiento a través de comparaciones y movimientos.

  • ¿Qué es el pivote en el método quick sort?

    -El pivote es un número de referencia que se utiliza para ordenar el arreglo. Se selecciona un elemento del arreglo para ser el pivote y los demás elementos se organizan en torno a él, separando los que son mayores y los que son menores.

  • ¿Cómo se realiza el ordenamiento una vez que se ha seleccionado el pivote?

    -Una vez seleccionado el pivote, se compara cada elemento del arreglo con él. Los elementos menores se mueven al lado izquierdo del pivote y los mayores al lado derecho, hasta que el pivote quede en su posición final y los arreglos a su izquierda e izquierda queden ordenados.

  • ¿Cuál es el propósito de las variables auxiliares en el código del quick sort?

    -Las variables auxiliares se utilizan para almacenar temporalmente los valores de los elementos del arreglo durante el proceso de intercambio, lo que permite mantener el orden y no perder los valores al realizar los movimientos.

  • ¿Cómo se divide el arreglo una vez que el pivote ha sido ordenado?

    -Una vez que el pivote está en su posición correcta, el arreglo se divide en dos sub-arreglos: uno a su izquierda y otro a su derecha. Luego, el proceso de ordenamiento se repite recursivamente en estos sub-arreglos.

  • ¿Por qué se recomienda practicar el método quick sort con diferentes secuencias de números?

    -Practicar el método quick sort con diferentes secuencias de números ayuda a comprender mejor su funcionamiento, a familiarizarse con el proceso de ordenamiento y a mejorar las habilidades para implementarlo en proyectos más complejos.

  • ¿Cómo se puede mejorar la comprensión del código del quick sort?

    -La comprensión del código del quick sort puede mejorarse al practicar, analizar el proceso paso a paso, y volver a ver el tutorial o buscar otras explicaciones y ejemplos que ayuden a clarificar los conceptos.

  • ¿Por qué el método quick sort es considerado más eficiente que otros métodos de ordenamiento en proyectos?

    -El método quick sort es considerado más eficiente en proyectos porque su complejidad temporal promedio es O(n log n), lo que lo hace mucho más rápido que métodos como el de burbuja, especialmente en grandes conjuntos de datos.

  • ¿Cómo se puede contactar al creador del tutorial si se tienen dudas?

    -Si se tienen dudas, se puede contactar al creador del tutorial a través de un tweet o un mensaje privado en Twitter, como se indica al final del script.

  • ¿Qué es lo que se espera que los espectadores hagan después de ver el tutorial?

    -Se espera que los espectadores practiquen el método quick sort, lo implementen en proyectos y lo utilicen para ordenar secuencias de números de manera eficiente.

Outlines

00:00

😀 Introducción al Método Quick Sort en Java

El tutorial comienza con una introducción al método de ordenamiento Quick Sort en Java. Jorge, el presentador, menciona que después de explorar otros métodos de ordenamiento como burbuja y inserción, se aborda Quick Sort, que es más complicado pero altamente eficiente. Se destaca que este método utiliza recursividad y se describe brevemente cómo funciona, utilizando punteros y un pivote para ordenar una secuencia de números.

05:01

🔍 Procedimiento del Método Quick Sort

Se profundiza en el procedimiento del Quick Sort, explicando el uso de punteros y el pivote. Se describe cómo se realiza la ordenación a través de varias iteraciones, comparando y moviendo los elementos según su relación con el pivote. Se ilustra con un ejemplo práctico, mostrando cómo los números se ordenan al final de cada iteración y cómo se posiciona el pivote en su lugar correcto.

10:03

📝 Implementación del Método Quick Sort en Código

Se presenta la implementación del método Quick Sort en código Java. Se discuten los tres métodos principales involucrados en la implementación: el método principal que invoca el ordenamiento, y dos métodos auxiliares que realizan los movimientos de intercambio y la selección del pivote. Se enfatiza la importancia de entender el código, que puede ser complicado, y se sugiere que el espectador lo practique para comprenderlo mejor.

15:06

🔁 Recursividad y División del Arreglo

Se aborda la recursividad del método Quick Sort y cómo se divide el arreglo en dos sub-arreglos para procesarlos de manera independiente. Se explica que una vez que el pivote se encuentra en su posición correcta, el método se vuelve a llamar recursivamente para ordenar los sub-arreglos restantes. Se destaca la importancia de la práctica y la comprensión de este proceso para dominar el método.

20:07

🎓 Conclusión y Recomendaciones Finales

El tutorial concluye con una resumida explicación de por qué el método Quick Sort es tan eficaz y recomendado para ordenar secuencias de números. Se motiva a los espectadores a practicar y a experimentar con diferentes secuencias de números para comprender plenamente el método. Además, se ofrece ayuda para resolver dudas a través de las redes sociales, y se despide a los espectadores con un mensaje de que se verán en el próximo tutorial.

Mindmap

Keywords

💡Quick Sort

Quick Sort es un algoritmo de ordenamiento desarrollado por Tony Hoare en 1960. Se trata de un método eficiente para ordenar una secuencia de números, el cual funciona mediante la selección de un 'pivote' y la partición del conjunto en dos, donde uno contiene valores menores o iguales al pivote y el otro contiene valores mayores. En el video, se explica cómo funciona este método y cómo se implementa en Java, destacando su eficiencia comparado con otros algoritmos de ordenamiento como el método de burbuja o el de inserción.

💡Puntero

En programación, un puntero es una variable que almacena la dirección de memoria de otra variable. En el contexto del Quick Sort, se utilizan dos punteros, uno que señala al extremo izquierdo y otro al extremo derecho del arreglo que se está ordenando. Estos punteros son fundamentales para el proceso de partición y son utilizados para comparar y mover los elementos dentro del arreglo hasta que se alcanza el ordenamiento deseado.

💡Pivote

El pivote es un elemento del arreglo que se utiliza como referencia para la partición del conjunto de datos durante el proceso de ordenamiento Quick Sort. En el video, se menciona que el pivote se elige generalmente como el primer elemento del rango de elementos a ordenar y que su posición final en el arreglo ordenado determina la separación entre los elementos mayores y menores en relación con él.

💡Recursividad

La recursividad es un concepto en programación donde una función llama a sí misma para resolver un subproblema, lo que permite abordar problemas más grandes dividiéndolos en problemas más pequeños. En el algoritmo Quick Sort, la recursividad se utiliza para aplicar el mismo proceso de partición y ordenamiento a las subsecuencias del arreglo que quedan a los lados del pivote, hasta que se alcanza el objetivo de ordenamiento.

💡Iteración

Una iteración en un algoritmo se refiere a una repetición del mismo proceso o bloque de instrucciones. En el contexto del Quick Sort, el proceso de iteración se refiere a la repetición del procedimiento de selección del pivote, partición y ordenamiento en las subsecuencias del arreglo hasta que todos los elementos estén en su posición correcta. El video describe cómo este proceso se repite varias veces para ordenar completamente el arreglo.

💡Método de ordenamiento

Un método de ordenamiento es un conjunto de reglas o un algoritmo que se utiliza para ordenar elementos en una secuencia. En el video, se comparan diferentes métodos de ordenamiento como el método de burbuja, el método de inserción y el método Quick Sort, destacando las diferencias en eficiencia y complejidad entre ellos. El método de ordenamiento Quick Sort es el principal tema del tutorial.

💡Java

Java es un lenguaje de programación de propósito general, conocido por su capacidad de crear aplicaciones de escritorio, móviles, empresariales y web. En el video, se utiliza Java para implementar y explicar el algoritmo Quick Sort, demostrando cómo se puede aplicar este concepto en un lenguaje de programación orientado a objetos.

💡Eficiencia

La eficiencia en informática se refiere a la capacidad de un algoritmo o programa para utilizar de manera óptima los recursos disponibles, como tiempo de procesamiento y espacio en memoria, para resolver un problema. En el video, se enfatiza la eficiencia del algoritmo Quick Sort, comparándolo con otros métodos de ordenamiento y destacando su ventaja en términos de velocidad y rendimiento.

💡Arreglo

Un arreglo en programación es una estructura de datos que almacena una colección de elementos, usualmente del mismo tipo, en una posición secuencial de memoria. En el contexto del video, el arreglo es el objeto que se está ordenando mediante el método Quick Sort, y su correcta manipulación es clave para el éxito del algoritmo.

💡Movimiento de elementos

El movimiento de elementos es una acción que se realiza dentro del algoritmo Quick Sort para reorganizar el arreglo en función de las comparaciones hechas con el pivote. En el video, se describe cómo los elementos se mueven de posición según si son mayores o menores que el pivote, lo cual es esencial para alcanzar el ordenamiento deseado.

💡Practicar

Practicar implica realizar ejercicios o tareas repetidamente para mejorar la habilidad o comprensión en un tema específico. En el video, el presentador alienta a los espectadores a practicar el método Quick Sort con diferentes secuencias de números para comprender mejor su funcionamiento y mejorar sus habilidades en algoritmos de ordenamiento.

Highlights

El tutorial de Java de código facilito presenta el método de ordenamiento quick sort.

Quick sort es un método de ordenamiento más complicado que burbuja y método de inserción.

El uso de la recursividad en quick sort lo hace un poco más complicado de comprender pero muy eficiente.

Se utilizan tres variables importantes en quick sort: dos punteros y un pivote.

El pivote es un número de referencia para ordenar el arreglo.

Después de la primera iteración, los números se agrupan alrededor del pivote.

El proceso de ordenamiento se realiza mediante el intercambio de números entre los punteros.

Una vez que los punteros se encuentran, el pivote se coloca en su posición final.

Los arreglos independientes que quedan se ordenan utilizando el mismo procedimiento de quick sort.

El método quicksort 1 es el encargado de llamar al método que realiza la ordenación.

El método quicksort 2 contiene todo el código de los movimientos del algoritmo.

La comparación entre el puntero de la izquierda y la derecha es crucial para el funcionamiento del algoritmo.

Se utiliza una variable auxiliar para realizar los intercambios de números.

El proceso se repite recursivamente hasta que todos los arreglos tengan un solo número.

El quick sort es uno de los métodos de ordenamiento más eficientes y recomendados.

El tutorial ofrece una explicación detallada y una demostración práctica del código de quick sort.

El autor Jorge recomienda la práctica y la exploración de diferentes secuencias de números para comprender mejor quick sort.

El video incluye una demostración del código en ejecución y su resultado final.

Se aconseja a los espectadores que practiquen y apliquen el método quick sort en proyectos para entender su eficiencia.

Transcripts

play00:00

[Música]

play00:10

Hola a todos Cómo están Bienvenidos a

play00:12

este nuevo tutorial de Java de código

play00:13

facilito Mi nombre es Jorge y el día de

play00:15

hoy vamos a ver un tema muy interesante

play00:18

que es el método ordenamiento quick sort

play00:20

en Java si vieron los diferentes videos

play00:23

de ordenamiento que que se publicaron

play00:26

anteriormente vimos el método burbuja

play00:30

que era un método muy simple muy

play00:31

sencillo pero muy tardado eh No muy

play00:34

eficiente para ordenar números eh luego

play00:37

vimos lo que era el método de inserción

play00:39

que es un poco más eficiente también

play00:41

sencillo

play00:42

e Pero el día de hoy vamos a ver el

play00:44

método quick sort que es un método mucho

play00:47

más complicado se utiliza eh

play00:49

recursividad Y puede ser un poco más

play00:52

complicado de comprender pero es muy

play00:55

importante verlo porque este método o

play00:58

este algoritmo es el más eficiente eh

play01:01

Para poder ordenar una secuencia de de

play01:04

números Entonces qué es lo que vamos a

play01:07

hacer bueno primero voy a tratar de

play01:08

explicarles un poco cómo funciona este

play01:10

método aquí me las ingeni con una

play01:13

presentación de powerp para hacer los

play01:14

movimientos y hacer la explicación un

play01:17

poco más detallada y bueno qué se va a

play01:19

utilizar eh Para poder ordenar esa

play01:21

secuencia de números vamos a utilizar

play01:24

tres variables muy importantes las

play01:26

primeras dos son dos punteros es un

play01:28

puntero izquierdo y un puntero derecho

play01:31

estos punteros van a estar apuntando

play01:33

hacia los extremos de nuestra secuencia

play01:35

o de nuestro arreglo y los vamos a ir a

play01:38

utilizar para poder realizar el

play01:41

ordenamiento entonces hay que estar muy

play01:43

pendientes de su papel ahorita lo voy a

play01:44

explicar con más detalle y la otra

play01:46

variable es el pivote el pivote es un

play01:48

número de

play01:50

referencia que se utiliza para poder

play01:53

Ordenar el arreglo vamos a agarrar por

play01:55

ejemplo este cu vamos a colocar aquí en

play01:57

medio ese cu va a ser nuestro pivote Y

play02:01

qué va a pasar que al final de nuestra

play02:03

primera iteración porque es un es un

play02:05

método es un algoritmo que consta de

play02:07

varias iteraciones que se va a ejecutar

play02:10

varias veces este mismo

play02:12

procedimiento lo que vamos a hacer es

play02:14

que vamos a agarrar el cuatro eh Como

play02:17

pivote nótese que es el el mismo número

play02:20

que al cual apuntaba el puntero

play02:22

izquierdo y al final vamos a tener todos

play02:24

los números mayores que cuatro del lado

play02:26

derecho y todos los que son menores que

play02:28

cuatro al lado izquier iero y el cuatro

play02:31

va a quedar automáticamente su posición

play02:33

correspondiente Entonces qué Vamos a

play02:35

hacer eh lo primero que hicimos fue

play02:38

agarrar el cuatro lo quitamos esta

play02:40

posición lo pusimos aquí en medio y

play02:42

dejamos este espacio libre este puntero

play02:44

izquierdo libre Entonces qué quiere

play02:46

decir que aquí yo puedo colocar un

play02:47

número de este lado Entonces vamos a

play02:49

hacer una comparación de todos los

play02:52

números comenzando del lado derecho lo

play02:54

primero que vamos a hacer es analizar el

play02:56

primer número del cual apunta este

play02:57

puntero el puntero derecho en este caso

play03:00

es el uno y vemos que es menor al cuatro

play03:04

como es menor hay que pasarlo hacia el

play03:05

lado izquierdo del cuatro que es a donde

play03:07

van los números menores Entonces lo

play03:09

vamos a agarrar y lo vamos a mover hacia

play03:13

la misma posición donde estaba el

play03:14

puntero izquierdo aquí y ya movimos el

play03:18

el primer número del lado izquierdo

play03:21

Cuando hacemos este movimiento de

play03:22

derecha a izquierda eh Y pasamos y

play03:25

colocamos un número en la posición de un

play03:28

puntero ese puntero es decir el del lado

play03:30

izquierdo va a avanzar hacia la derecha

play03:32

lo vamos a mover porque se hizo un

play03:36

movimiento y al hacer este movimiento

play03:38

entonces quiere decir que ahora vamos a

play03:39

pasar a hacer una comparación del lado

play03:41

izquierdo ya no del derecho vamos a

play03:44

comparar este número que es el c eh

play03:46

notes que el puntero derecho sigue vacío

play03:49

vemos el cco y vemos que el cco es mayor

play03:52

al cuatro Entonces como el c Es mayor

play03:54

que 4 tiene que estar del lado derecho

play03:57

lo vamos a agarrar y lo vamos a mover

play04:00

hacia donde está el puntero derecho

play04:02

nótese que siempre aparentan estar los

play04:06

punteros vacíos hay una posición vacía y

play04:09

ahí es donde se van a realizar los

play04:11

movimientos Entonces ahora vamos a

play04:13

agarrar el puntero derecho y lo vamos a

play04:14

mover hacia la izquierda como hicimos

play04:16

también con el puntero izquierdo y

play04:18

hacemos la comparación Qué pasa aquí el

play04:21

número seis ya es mayor que el cuatro

play04:25

Entonces está del lado

play04:27

correspondiente Qué sucede Bueno vamos a

play04:30

agarrar el puntero y lo vamos a mover

play04:32

hacia la izquierda nuevamente hasta que

play04:34

hagamos ese movimiento Ya que en el

play04:36

puntero izquierdo no se puede hacer nada

play04:37

porque está vacío vemos el tres y este

play04:42

evidentemente vemos que el tres es menor

play04:44

que cuatro de manera que este sí lo

play04:46

vamos a

play04:47

mover lo movemos Y bueno ya está del

play04:52

lado izquierdo y el puntero izquierdo

play04:53

entonces pasa el lado hacia moverse

play04:56

hacia la parte derecha eh analizamos

play04:58

aquí el dos vemos que el dos es menor

play05:01

que 4 entonces se va a quedar en esa

play05:02

posición el puntero vuelve a avanzar y

play05:05

el momento en el que los dos punteros se

play05:08

encuentran en la misma posición eh hemos

play05:11

encontrado el punto donde va el cuatro

play05:13

Entonces vamos a agarrar el cuatro que

play05:15

es el pivote nuestro número de

play05:17

referencia y lo vamos a mover al medio

play05:20

Entonces qué pasó que ya hemos ordenado

play05:24

todos los números que van del lado

play05:25

izquierdo del cuatro en su parte

play05:28

izquierda y los números que van del lado

play05:29

derecho en su parte correspondiente

play05:31

Entonces qué sucede el cuatro Ya está en

play05:33

su posición natural ya está ordenado

play05:36

falta ordenar estos estos arreglos

play05:39

independientes que nos quedaron aquí

play05:40

afuera como pueden ver tenemos dos

play05:42

arreglos nuevos un arreglo del lado

play05:44

derecho que es el se y el 5 y del lado

play05:47

izquierdo tenemos el un el 3 y el dos

play05:50

qué va a suceder aquí pues va a suceder

play05:52

lo

play05:52

siguiente el procedimiento que acabamos

play05:54

de realizar se va a volver a realizar

play05:57

dos veces eh lo vamos a realizar aquí

play06:00

del lado izquierdo

play06:04

eh tomando nada más el arrego o la

play06:07

secuencia del de estos tres números que

play06:09

fueron los que están en el lado

play06:10

izquierdo del cuatro y y también

play06:13

posteriormente los del lado derecho que

play06:15

son el se y el cco que también se va a

play06:17

hacer asignando un puntero izquierdo en

play06:20

el se y un puntero derecho en el cco

play06:21

Entonces qué va a pasar que bueno vamos

play06:24

a volver a hacer el procedimiento

play06:25

agarramos el uno lo colocamos como

play06:28

pivote la comparación el dos es

play06:32

evidentemente

play06:33

bueno es el dos Es evidentemente mayor

play06:36

que el uno de manera que no se hace

play06:38

movimiento el tres también es mayor no

play06:41

se hace movimiento así que bueno el uno

play06:44

va a regresar a su posición original y

play06:46

el arreglo que va a restar va a ser el

play06:48

tres Y el dos entonces eh se van a

play06:52

colocar los punteros en este nuevo

play06:54

arreglo y luego se va a hacer la

play06:56

comparación se pasa el tres

play07:00

el uno ya no se hizo nada porque ya

play07:01

estaba ordenado este arreglo de un

play07:03

número ya no se ya no se hace ningún

play07:05

procedimiento entonces ahí termina el

play07:07

proceso continuamos por eso con estos

play07:09

dos hace el tres tres queda pivote se

play07:12

hace la comparación el dos es menor que

play07:14

el tres se pasa del lado izquierdo y

play07:17

luego bueno se vuelve a colocar el

play07:19

pivote en su posición original en su

play07:22

posición ordenada y bueno ya vemos que

play07:25

quedaron todos esos números

play07:27

ordenados del uno al cuatro y falta

play07:30

bueno Ordenar el cinco y el

play07:34

seis voy un poco rápido porque si no se

play07:37

va a hacer el video muy largo Pero bueno

play07:40

este continuamos el seis va a ser el

play07:43

pivote vamos a comparar con el cco 5 es

play07:46

menor a 6 lo pasamos del lado izquierdo

play07:51

movemos el índice del lado derecho y

play07:54

luego el se lo colocamos en su posición

play07:56

ordenada y Bueno finalmente hemos visto

play07:58

que hemos ordenado del arreglo

play08:01

eh es un poco complicado de comprender

play08:04

en código por eso quise hacer esta este

play08:06

pequeño paréntesis en Powerpoint para

play08:08

explicarlo y bueno ahora vamos a

play08:11

proceder con el código Espero que le

play08:13

hayan podido entender un poco ya que en

play08:15

el código va a ser un poco más difícil

play08:17

pero bueno eh vamos a a continuar en el

play08:21

código básicamente tenemos tres métodos

play08:23

eh Es una forma de hacerlo se puede

play08:26

hacer de muchas maneras

play08:27

eh lo el primer método se llama ordenar

play08:30

quick sort como pueden ver Tenemos aquí

play08:32

en un parámetro un arreglo que voy a

play08:36

utilizar el mismo arreglo que he

play08:37

utilizado anteriormente es este eh lo

play08:40

voy a colocar y lo que va a hacer ese

play08:43

método es que ese ar lo va a cambiar y

play08:44

va a ser igual al arreglo ordenado

play08:46

entonces como pueden ver aquí tenemos

play08:48

que el arreglo es decir este que se está

play08:50

introduciendo en el método va a ser

play08:51

igual a la ar ordenado quicksort 1 entre

play08:55

paréntesis array eh Por qué colocamos

play08:58

aquí porque Bueno el el método quicksort

play09:01

1 es es un método e de tipo que que nos

play09:05

regresa una variable como pueden ver

play09:07

termina en un return y nos va a regresar

play09:09

el arreglo ya ordenado Entonces qué

play09:12

sucede que que bueno se el arreglo

play09:15

original va a ser igual al rel ordenado

play09:17

y se va a llamar a a este método que

play09:20

está aquí en este método vamos a

play09:23

introducir Entonces el el arreglo

play09:25

nuevamente el arreglo se llama números y

play09:28

los números van a pasar

play09:30

a a insertarse ahora sí que en otro en

play09:34

en otro método y este método es el

play09:36

método quicksort 2 el quicksort 2 eh Ya

play09:40

bueno contiene todo el código de los

play09:41

movimientos que se hace y como pueden

play09:44

ver tiene de un lado el el primer

play09:47

parámetro es números que corresponde al

play09:49

arreglo el segundo parámetro que es el

play09:52

cero eh

play09:54

corresponde bueno corresponde

play09:56

inicialmente a lo que es el el el

play10:00

puntero izquierdo es decir el cero que

play10:02

es el extremo izquierdo del arreglo que

play10:05

bueno originalmente como lo vimos en el

play10:07

powerp es el que está hasta acá es el

play10:10

número

play10:11

uno es la i perdón y aquí ahorita es el

play10:15

un porque ya está ordenado luego

play10:17

continuamos con los parámetros

play10:20

tenemos números pun length men1 que

play10:23

realmente es el puntero derecho como

play10:25

pueden ver aquí está marcado es el

play10:26

derecho sería el se que está está la

play10:29

parte derecha

play10:31

eh Y bueno pues el pivote aún no se no

play10:35

no se elige pero vamos a escoger el el

play10:37

mismo puntero izquierdo y bueno Estos

play10:40

son estos son los parámetros iniciales

play10:41

vamos a ordenar ese arreglo Eh ya con el

play10:45

cero del lado izquierdo y el y el último

play10:47

número hacia el extremo derecho como

play10:49

como puntero derecho Entonces vamos a

play10:52

ver este código y en el código Bueno es

play10:55

un poco complicado pero espero lo pueden

play10:59

entender voy a extender esto un poco más

play11:01

para que puedan

play11:03

ver para que puedan ver el código

play11:06

completo Okay este este completo es el

play11:10

método de del quicks 2 pueden colocar

play11:14

pausa en el video para que puedan

play11:15

copiarlo el código ya funciona eh Y esto

play11:19

lo que va a hacer es son todos esos

play11:21

movimientos Entonces cómo vamos a

play11:23

iniciar lo primero que vamos a hacer es

play11:25

una comparación vamos a a comparar si el

play11:29

de la izquierda es es mayor o igual a la

play11:32

derecha si el puntero de la izquierda es

play11:35

es mayor o es igual al al derecho quiere

play11:38

decir eso se refiere

play11:40

a con eso nos estamos refiriendo a que

play11:43

la

play11:44

i supongamos que quedó aquí a que se se

play11:48

encuentra en esta posición como pudieron

play11:51

ver esto solamente sucede cuando queda

play11:52

una reglo de un número es decir cuando

play11:56

cuando nos quedó el uno no sé si

play11:57

recuerdan nos quedó que que era un

play12:00

arreglo un número ya los dos punteros

play12:01

seran el mismo número cuando eso suceda

play12:04

bueno automáticamente se va a regresar

play12:06

el arreglo ya no se va a necesitar hacer

play12:07

este procedimiento

play12:09

eh Porque pues ya ya se habrá concluido

play12:12

se regresará el arreglo Y de lo

play12:15

contrario bueno Vamos a continuar se

play12:17

asignan bueno se se asignan Ahora aquí

play12:20

este esos punteros se van a asignar a

play12:22

otras variables que son la i y la d son

play12:24

variables independientes que realmente

play12:27

hacen referencia a los punteros

play12:29

y bueno y hacemos una comparación de que

play12:31

tienen que ser diferentes si son

play12:33

diferentes bueno se declara se vamos a

play12:36

declarar lo que es el pivote el

play12:40

pivote luego lo vamos a igualar al al

play12:42

número de la

play12:44

izquierda luego vamos a utilizar también

play12:46

una variable auxiliar para poder hacer

play12:48

los movimientos aquí ya el pivote es el

play12:50

mismo número a la izquierda y bueno

play12:53

vamos a crear un ciclo While en el cual

play12:55

se se va a estar ejecutando todo el

play12:57

movimiento mientras que izquierda sea

play12:59

diferente a derecha es decir cuando la

play13:03

derecha está en un extremo y la

play13:05

izquierda en otro mientras que se

play13:07

empiezan a hacer este Estos tipos de

play13:09

movimientos se va a estar ejecutando ese

play13:12

ciclo hasta que evidentemente pues

play13:14

queden en en una misma posición

play13:17

eh Y lo que hacemos Es es lo siguiente

play13:19

Bueno vamos a estar revisando el del

play13:22

lado derecho eh todos los los los

play13:26

números mientras que sean mayores igual

play13:29

al pivote y menor a al índice izquierdo

play13:33

y que Y entonces y mayor al índice

play13:36

izquierdo Perdón entonces vamos a ir

play13:38

decrementado el puntero

play13:41

eh Cuando los números del lado izquierdo

play13:45

también

play13:46

sean sean estén bueno estén en la

play13:49

posición adecuada eso básicamente indica

play13:50

que están en la posición adecuada que

play13:52

son menores al pivote del lado izquierdo

play13:55

Entonces se va a ir incrementando el

play13:57

puntero pero cuando no sea así

play14:00

e se va a hacer el el cambio el cambio

play14:03

se hace se hace más adelante se hace

play14:05

aquí en stave en el que se encontramos

play14:08

que bueno derecha obviamente tiene que

play14:09

ser diferente al a izquierda y el el

play14:14

auxiliar Bueno lo que va a pasar es que

play14:18

ya ya se hizo estos movimientos Entonces

play14:20

ya quiere decir que hay que hacer un

play14:21

cambio y cuando se vaya a hacer ese

play14:24

cambio entonces la auxiliar va a ser

play14:25

igual al número de la derecha Entonces

play14:27

el número de la derecha lo vamos a

play14:28

guardar una variable auxiliar y luego en

play14:30

el número a la derecha vamos a meter el

play14:32

número que está del lado izquierdo y el

play14:34

lado izquierdo va a ser igual al

play14:36

auxiliar es decir intercambiamos el lado

play14:38

derecho por el lado izquierdo eh se hace

play14:41

el cambio de de números es algo que hay

play14:44

que comprender cuando estamos

play14:47

analizando voy a ordenarlo un momento

play14:50

nada más para poder explicar

play14:52

esto cuando vamos a tomar estos tres

play14:56

cuando estamos analizando un número

play14:59

vamos a decir que el pivote es el tres

play15:01

en este caso yo tengo aquí de este lado

play15:05

tengo puntero derecho y el puntero

play15:08

izquierdo eh vemos que por ejemplo el

play15:11

dos es menor al tres y hay que pasarlo

play15:13

al lado izquierdo aquí realmente hay un

play15:16

número escrito que aunque aquí lo ven

play15:18

vacío en el código Realmente si hay un

play15:20

hay un número guardado nunca está vacío

play15:22

no vale cero sino que se se queda

play15:24

guardado por ejemplo el tres ahí

play15:26

Entonces el tres está repetido Como

play15:29

quien lo dice pero aquí en realidad no

play15:30

está vacío sino que hay un número en el

play15:32

código en el programa Y por eso bueno se

play15:35

tiene que guardar para no perderlo y al

play15:37

momento de que se cambia eh si aquí hay

play15:40

un número bueno se va a ir pasando para

play15:41

acá ese número vacío se va a estar

play15:43

copiando y ese número a veces es el

play15:45

pivote Entonces siempre hay que hay que

play15:47

mantenerlo en cuenta eh se hace esta

play15:50

rutina y posteriormente Bueno cuando de

play15:53

la izquierda ya es igual a la derecha

play15:55

entonces quiere decir que ya se ya se

play15:58

enc encontraron eh estos números vamos a

play16:00

decir que aquí ya se encontraron como un

play16:02

ejemplo y Que bueno hay que dividir el

play16:05

arreglo en dos Entonces cuando se divid

play16:06

entre este y esos Y estos de

play16:10

acá y estos de acá por decir algo

play16:14

entonces esos dos arreglos se van a

play16:17

volver a se va a volver a ejecutar este

play16:19

mismo este mismo método se va a volver a

play16:21

ejecutar el procedimiento y la forma de

play16:23

hacerlo es la siguiente se coloca

play16:24

quicksort 2 nótese que se está volviendo

play16:27

a llamar el mismo método

play16:30

eh que es este mismo se vuelve a llamar

play16:33

el mismo método para que se ejecute y se

play16:36

va a ejecutar el arreglo pero con

play16:39

punteros diferentes es decir e con el la

play16:43

variable I hacia la izquierda y la el

play16:46

puntero izquierdo menos un como el

play16:48

extremo derecho Entonces esto nos va a

play16:50

dar el arreglo que está del lado

play16:52

izquierdo y hace referencia Bueno al al

play16:56

puntero original sin moverse y luego del

play17:00

lado derecho el mismo arreglo con

play17:03

izquierda más un que hace referencia al

play17:06

lado derecho de del arreglo bueno el

play17:09

arreglo que quedó del lado derecho del

play17:11

pivote con el extremo bueno la derecha

play17:14

original que se guardó acá al inicio del

play17:17

programa y Esto va a volver a ejecutar

play17:19

el código y sucesivamente hasta que

play17:23

todos los arreglos sean de uno es decir

play17:25

que ya se hayan contado todos los

play17:27

números eh individualmente ordenados Y

play17:31

bueno eso nos va a dar como resultado el

play17:33

orden de todos los los bueno ahora sí

play17:37

que toda la secuencia de números es un

play17:39

poco complicado y yo Les recomiendo que

play17:41

lo practiquen que lo piensen eh también

play17:44

que Que bueno que si buscan hacerlo de

play17:47

otras maneras que vayan practicando con

play17:49

diferentes eh secuencias de números que

play17:53

puedan investigar diferentes formas de

play17:55

hacerlos y que practiquen este

play17:57

procedimiento que les mostré

play17:58

inicialmente pueden regresar el video y

play18:00

volverlo a ver para que puedan entender

play18:01

bien Cómo realmente funciona eh

play18:04

posteriormente ya con práctica podrán si

play18:06

no logran entender este código

play18:07

completamente a la primera que

play18:10

realmente yo no lo entendería la primera

play18:13

me costó trabajo cuando lo aprendí hace

play18:15

ya unos años pero con práctica lo van a

play18:19

comprender y ven que realmente es muy

play18:21

interesante y si hacen la prueba

play18:23

realmente es mucho más rápido que otros

play18:25

métodos de ordenamiento Entonces vamos a

play18:27

practicar lo que ya tengo el método lo

play18:29

voy a

play18:31

ejecutar voy a Okay a poner aquí la

play18:34

vista y lo voy a ejecutar y vamos a ver

play18:37

cómo nuestro argo se Bueno realmente se

play18:40

ordena se ordenaron todos los números y

play18:44

vemos que realmente funciona

play18:46

e no Espero que realmente le entiendan a

play18:50

la primera pero como ya lo dije tienen

play18:52

que practicarlo aquí tienen el código

play18:55

pueden copiarlo pueden probarlo eh Y

play18:58

realmente Bueno espero que encuentren

play19:00

este método interesante Porque si es muy

play19:02

muy

play19:03

eficiente Bueno pues eh básicamente

play19:07

Espero que que bueno hayan podido

play19:10

rescatar algo de este tutorial

play19:13

realmente Bueno es un método como ya lo

play19:16

dije muy interesante Espero que puedan

play19:18

practicarlo y que realmente le muestren

play19:21

interés porque a la a la hora de

play19:24

implementarlo en proyectos y se va a

play19:26

necesitar mucho ordenar secuencias de

play19:27

números

play19:29

Ese es el método más eficiente es el

play19:31

algoritmo más eficiente de ordenamiento

play19:33

y realmente es el que más se

play19:35

recomienda incluso más que bueno el

play19:38

método de inserción el método de burbuja

play19:40

que bueno son métodos utilizados y que

play19:42

son son funcionales no quiere decir que

play19:45

no lo sean pero que el quicks es mucho

play19:48

más eficiente y se han hecho pruebas y

play19:51

realmente sí se ha comprobado entonces

play19:53

Bueno eso es todo por este tutorial si

play19:55

tienen alguna duda no duden en mandarme

play19:57

un tweet allí abajo está mi Twitter

play19:59

pueden mandar un tweet con toda

play20:01

confianza o un

play20:04

mensaje privado no sé cualquier cosa no

play20:07

hay ningún problema eh directamente

play20:09

conmigo y bueno yo les puedo eh ayudar a

play20:12

a solucionar sus dudas Bueno pues

play20:14

muchísimas gracias por ver este video y

play20:16

nos vemos en la próxima con otro nuevo

play20:18

tutorial Bye bye

Rate This

5.0 / 5 (0 votes)

Связанные теги
OrdenamientoQuick SortJavaTutorialAlgoritmosProgramaciónEficienciaRecursividadPrácticaOptimización
Вам нужно краткое изложение на английском?