Ordenamiento Quicksort (Rápido!) en Java

Поделиться
HTML-код
  • Опубликовано: 8 фев 2025
  • 🚀 Desbloquea más de +170 cursos Premium a un precio especial: codigofacilito...
    🐊 Síguenos en:
    Twitter: / codigofacilito
    Facebook: / codigofacilito
    Instagram: / codigofacilito
    TikTok: codigofacilito.oficial
    ----
    Código Facilito es una de las plataformas de aprendizaje online de programación más grandes de habla hispana. Desde el 2010 formamos programadores en toda América Latina y España enseñando. HTML, JavaScript, React, Python, Rails, Go y mucho más.

Комментарии • 118

  • @CINUPTC
    @CINUPTC 12 лет назад +4

    gracias,, muchas gracias de verdad a mi profesor de la universidad no le entiendo nada nada.pero a usted, le entiendo muy bien, explica de una manera sencilla, y clara.
    gracias por esta magnifica oportunidad, de esta manera puedo sacar mi carrera adelante, ya que me estaba desmotivando por no entender la programacion, Dios lo bendiga. saludos desde Bogotá colombia....

  • @isaacsantanaaquino7508
    @isaacsantanaaquino7508 6 лет назад +73

    public class Ordenador{
    public void ordenarQ(int[] array){
    array = quicksort1(array);
    }
    public int[] quicksort1(int numeros[]){
    return quicksort2(numeros,0,numeros.length-1);
    }
    public int[] quicksort2(int numeros[],int izq, int der){
    if(izq>=der)
    return numeros;
    int i=izq, d=der;
    if(izq!=der){
    int pivote;
    int aux;
    pivote = izq;
    while(izq!=der){
    while(numeros[der]>=numeros[pivote] && izq

  • @ryvenfv880
    @ryvenfv880 6 лет назад

    Me encantó tu explicación. La verdad es que hace muchos años no le entendí al Quicksort y ya le entendí. No tengo problema con la recursividad, pero en particular este algoritmo no lo entendía.

  • @joseluisperezmontano2391
    @joseluisperezmontano2391 3 года назад +2

    La explicación de la lógica cumple mas o menos con el ordenamiento quickSort (aunque en si el ordenamiento se hace de una manera un poco diferente).
    Lo que si es que el código no es para nada Quicksort tengo 3 observaciones respecto a eso si gustan pueden hacer las pruebas
    1.- el while que se supone va a ir incrementando el izq (izq++) NUNCA SE EJECUTA
    2.- quicksort2(numeros, i, izq - 1) Nunca realiza modificaciones al array siempre cae en la condicional que esta al principio para retun numeros;
    NOTA: si eliminas esas dos partes del codigo, va a seguir realizando de forma correcta el ordenamiento
    3.- ese algoritmo lo que hace para el ordenamiento es ir posicionando del lado izquierdo los numero mas pequeños hasta terminar de recorrer todos sus elementos, un poco parecido al insert sort

  • @Cranidactyl
    @Cranidactyl 11 лет назад +2

    Bien explicado, solo un problema de código, ayudaría bastante si señalas con las llaves el inicio y final de cada sentencia y respetar las sangrías.

  • @KelvinCastilloC
    @KelvinCastilloC 12 лет назад

    El video es mucho mas q interesante. Solo hace falta practicarlo mucho y dar las gracias al profesor por toda su paciencia.

  • @Sergio1Bautista
    @Sergio1Bautista 7 лет назад

    Lo que tanto me gusta de estos videos es que no duran 40 minutos, hora y media...
    Y le entiendo.

  • @stevenaragonurrea9083
    @stevenaragonurrea9083 8 лет назад +25

    Me encanta los vídeos que manejas, estoy en la transición de lenguaje, me jode un poco que no tabules bien el código.
    (muchas gracias por el aporte).

    • @stevenaragonurrea9083
      @stevenaragonurrea9083 8 лет назад +2

      s17.postimg.org/qgyqe47cv/algoritmo.png
      (tabulado) mas fácil de transcribir.

  • @camilo.magnus
    @camilo.magnus 3 года назад +1

    El problema de no manejar identacion es que no se sabe cuándo se abre o cierra un ciclo, bucle o condicional.

  • @mariafernadadiaz573
    @mariafernadadiaz573 12 лет назад

    me han servido de mucho los tutos y espero que mas mujeres como yo se animena a aprender programacion ya que esto tambien lo odemos hacer nosotras gracias jorge por compartir tus conocimientos un saludo desde colombia para ti y un besito de mi parte

  • @sataku4415
    @sataku4415 9 лет назад +2

    Hola muchas gracias por el aporte.
    Creo que se puede mejorar bastante el codigo, y hay cosas que te confunden, como por ejemplo le estás modificando el valor de los parametros "izq" y "der" en lugar de modificar los valores "i" y "d" que son los que deberías aumentar y disminuir de valor.

  • @JadeKaterine
    @JadeKaterine 12 лет назад

    Nada es "muy excelente", la excelencia es lo maximo que se puede alcanzar. En teoría, no existe nada mejor que esto, por lo tanto, decir "muy excelente" es redundante.

  • @patriciafiallos8260
    @patriciafiallos8260 Год назад

    Muy bien explicado😀👏👏 muchas gracias!!!

  • @drDUMBex
    @drDUMBex 2 года назад +1

    me desespera como no usas la tabulación para marcar el anidado...

  • @lixon111
    @lixon111 2 года назад

    Muchas gracias por la explicación😁

  • @javiruizgarcia2166
    @javiruizgarcia2166 12 лет назад

    esta muy bien expuesto ... enhorabuena por el video-tutorial entero

  • @carlitozz31
    @carlitozz31 11 лет назад +2

    Que tal amigo! excelente vídeo, le eh entendido muy bien! muchas gracias...
    Podrías hacer un vídeo en la cual expliques la forma de hacer el camino mas corto en grafos? para mi es un tema algo difícil y hasta ahora no eh podido hacerlo! te agradecería mucho si lo haces!

  • @martinsouza9994
    @martinsouza9994 7 лет назад +28

    Me parte los ojos la mala indentación

  • @codepanda5171
    @codepanda5171 7 лет назад +2

    Buen vídeo, gracias por los anteriores también, pero... enserio tabula... o si no te gusta tabular siempre puedes hacer ctrl + shift + f.
    Seguir tu código fue una aventura en esta ocasión.
    igualmente gracias por tu tiempo

  • @franklarrea393
    @franklarrea393 6 лет назад

    El video tiene sus años pero desde mi ignorancia no me explico el porque el nombre tan largos de las variables quick1; quick2 o lo que sea pones lo siguiente quicksort_punto_net_punto_ar_punto_mx_punto_us_punto_irak_punto_com (JOptionPane.showInputDialog("Sarcasmo no te ofendas"); siendo de que declarando quick1, quick2 y asi sucesivamente estaria mejor y mas entendible, Saludos!!

  • @danisotos
    @danisotos 9 лет назад +2

    hola, muchas gracias por todo el tutorial, evidentemente como vos decis es muy dificil entenderlo a la primera, la duda que me queda es por que retorna numeros 2 veces seguidas?

  • @eduardosandoval5017
    @eduardosandoval5017 5 лет назад

    en que parte estas decidiendo de que si los numeros son iguales se deben ir a la izquierda o derecha?

  • @JadeKaterine
    @JadeKaterine 12 лет назад

    Es en el contexto. Decir muy excelente esta mal dicho, el muy sobra, intenta googlear eso. También puedes ver esta animación, lo explica mucho mejor que yo.

  • @camilocamargo98
    @camilocamargo98 7 лет назад

    es indispensable los tres metodos quicksort que creó para poder ordenar un arreglo???

  • @axyLms
    @axyLms 7 лет назад +1

    No entiendo el sentido de poner dos if que se contradicen, siendo que podrias poner solo uno y por descarte seria el otro, es decir un if-else. Ademas pones innecesariamente Else: return numeros, podrias haberlo puesto dentro del if(der==izq). Por otro lado, la mala identacion y que no pongas corchetes en algunos ciclos, hace que no se entienda mucho el orden...

  • @wordle_23
    @wordle_23 11 лет назад

    entiendo se uso int para entender mejor, pero yo voy a usar números doubles,, números de hasta 10.000 , en el arreglo, solo para que valga la pena el arreglo,

  • @jonathanrojassimon2901
    @jonathanrojassimon2901 8 лет назад

    Muchas gracias, me sirvió mucho para implementarlo en un proyecto

  • @DanielCardozoC
    @DanielCardozoC 9 лет назад

    Gracias por la explicación y el código, aunque tengo que admitir que esa desastrosa identación me iba causando algunos dolores de cabeza.

  • @chavocolombiano
    @chavocolombiano 11 лет назад

    Yo creo que es dificil de entender por que es un algoritmo basado en recursividad o eso veo yo,toca prestarle mucha atencion y gastarle un buen tiempo y meterle su buena logica

  • @scl2458
    @scl2458 Год назад +1

    Dios me vas a hacer dormir

  • @nandoplaza6703
    @nandoplaza6703 12 лет назад

    oye amigo para listas dobles no tienes ejemplos como hacer efectiva la utilizacion del metodo quicksort para ordenar nodos.

  • @ema_gym
    @ema_gym 7 лет назад

    Muchas gracias por el tutorial.

  • @erickjavierl.c.5949
    @erickjavierl.c.5949 3 года назад +1

    ME SUENA BASTANTE REDUNDANTE, POR QUÉ NO EN LUGAR DE DOS MÉTODOS, LO METES EN UNO? Y POR QUÉ EN LUGAR DE SUBSTITUIR I=IZQ, DEJAS O I O IZQ?

  • @breiyercorpasamaya8554
    @breiyercorpasamaya8554 8 лет назад

    Deberías dejar el ejercicio en block de notas en la descripción u algo parecido.

  • @enteymartinez87
    @enteymartinez87 11 лет назад

    excelente explicacion, ni mi maestro de programacion me explicaria asi, muchas gracias por compartir el conocimiento. podrias hacer uno de shell porfavor

  • @pedromontiel323
    @pedromontiel323 8 лет назад

    Con tigo estoy aprendiendo a programar. Tus videos son muy buenos y haces honor a tu cuenta "código facilito" pero tengo una queja desde siempre.... Nunca explicas algo tan insignificante pero para los que apenas estamos iniciando es una gran duda.. Y es porque en algunas variables usas " paréntesis" y en otras "corchetes" .. Y porque en algunos lados usas punto y coma y en otros no pones nada.. Es algo muy básico pero para los que estamos iniciando aveces nos confundimos.

    • @4X4ALTAYRK2K
      @4X4ALTAYRK2K 7 лет назад

      un programador aprende de los libros y se apoya en los videotutoriales, en los libros todo esta muy bien explicado.

    • @jaimeogrady6843
      @jaimeogrady6843 7 лет назад

      No necesitas libros para aprender eso. Googlea y vas a encontrarlo muy bien explicado. Igualmente te comento que eso es algo muy de la base de la programación y esto es un algoritmo relativamente avanzado. Te conviene aprender la base y despues seguir con cosas mas complejas. Lo de los corchetes, son arrays o vectores (es lo mismo con otro nombre) y los parentesis, supongo que te referis a los metodos, son funciones a las que hay que pasarle parametros, los cuales van entre parentesis.

  • @deleydatrujillo3933
    @deleydatrujillo3933 8 лет назад

    Muy buena explicación.

  • @AMADOR368
    @AMADOR368 12 лет назад

    Muy buena explicacion ;; Gracias

  • @Alexander_Evergarden
    @Alexander_Evergarden 2 года назад

    una pregunta, el método Arrays.sort que es el que usa java es el mismo que quickSort? o algun otro como shell, merge, etc? o este no tiene como tal un parecido con alguno de estos?

  • @macariovzi
    @macariovzi 12 лет назад

    muy buena explicación, me encantó

  • @wordle_23
    @wordle_23 11 лет назад

    bien el esquema, después es mucho ciclo, y ciclo, creando las variables, y sabiendo poner en el lugar correctos las variables en los ciclos, no es tan difícil, creo que hay que tener mas memoria, solo para no perderse, después el ciclo hace lo suyo.

  • @franklinaldas2756
    @franklinaldas2756 9 лет назад

    DISCULPA COMO PUEDO ORDENAR ASÍ MISMO UN ARREGLO PERO QUE EL USUARIO INGRESE EL VALOR DE CADA POSICIÓN ¿¿??? Y LO ORDENE CON EL MÉTODO QUICKSORT

  • @jonatantaddeisimancas3152
    @jonatantaddeisimancas3152 6 лет назад

    es necesario esta linea: "while(numeros[izq] < numeros[pivote] && izq < der) izq++;" ???

  • @tecosk8ordie
    @tecosk8ordie 8 лет назад +3

    Parece estar el código al contrario que la explicación. Lo que cuadraría con la explicación sería el while de la izq por encima con . Y parece que falta la sustitución de la posición del pivote.

  • @fernandoflorez8646
    @fernandoflorez8646 9 лет назад +1

    Excelente explicación pero para la próxima mejora la identacion.
    Gracias...!!!

  • @A00512773
    @A00512773 11 лет назад +1

    Excelente aportacion:D , Podrias hacer el RadixSort?

  • @danielcruzrodriguez9026
    @danielcruzrodriguez9026 11 лет назад

    ¿Como podria ordenar numeros guardados en una lista simple mente enlazada en nodos?

  • @produccionesdevasta
    @produccionesdevasta 9 лет назад

    Esta parte de codigo es necesaria?, por que creo no hace nada ya que numeros[izq] y numeros[pivote] valdría el mismo valor así que nunca seria valido. Espero alguien pueda responderme, gracias.
    while (numeros[izq] < numeros[pivote] && izq < der)
    izq++;

  • @JUNKER8O
    @JUNKER8O 8 лет назад

    los q tanto critican hagan sus vídeos y dejen de estar ching...o...hay muchos vídeos q empiezan desde cero

  •  12 лет назад

    Ayuda, no veo los capítulos del 23 al 26, o no existen ?

  • @mechipod
    @mechipod 11 лет назад

    gran explicación!

  • @eijikondo3695
    @eijikondo3695 12 лет назад

    una pregunta, es que cuando pongo un array de 50,000 numeros llega a tener un bug me podrias ayudar!!

  • @alejandroortizc2007
    @alejandroortizc2007 9 лет назад

    Saludos, ¿que método puedo utilizar para ordenar una Linked List?

  • @carlosestebanburgoslopez4925
    @carlosestebanburgoslopez4925 10 лет назад

    Funciona de igual manera en el JCreator?

  • @alexdlveliz2394
    @alexdlveliz2394 8 лет назад

    acabas de salvarme la vida

  • @MNLAntony
    @MNLAntony 12 лет назад +1

    Juela!! Es el algoritmo más complicado que había visto hasta ahora, muy, muy difícil de entender... :(

  • @cristianpcha
    @cristianpcha 11 лет назад

    Por favor haz uno del metodo shell

  • @Fenixloquendofull
    @Fenixloquendofull 10 лет назад

    ok.....creo que tendre pesadillas esta noche hahaha
    Buen video, bien explicado como siempre

  • @loopme4659
    @loopme4659 3 года назад +2

    public int[] quicksort(int numeros[], int izq, int der) {
    if (izq >= der) {
    return numeros;
    }
    i = izq;
    d = der;
    if (izq != der) {

    pivote = izq;
    while (izq != der) {
    while (numeros[der] >= numeros[pivote] && izq < der) {
    der--;
    }
    while (numeros[izq] < numeros[pivote] && izq < der) {
    izq++;
    }
    if (der != izq) {
    aux = numeros[der];
    numeros[der] = numeros[izq];
    numeros[izq] = aux;
    }
    }
    if (izq == der) {
    quicksort(numeros, i, izq - 1);
    quicksort(numeros, izq + 1, d);
    }
    } else {
    return numeros;
    }
    return numeros;
    }

  •  12 лет назад

    No veo los capítulos del 23 al 26, ayuda por favor.

  • @DiegoGonzalez-zf6fz
    @DiegoGonzalez-zf6fz 8 лет назад

    Lo probé y este código solo funciona con arreglos de dimensiones pequeñas,luego da un error de recursividad infinita.Trate de controlarlo con try and catch pero sucedió que no ordena correctamente este vector. Podrías dar alguna solución a este problema.

    • @mtzrmzia
      @mtzrmzia 8 лет назад +1

      Seguramente el error que te ha dado es este:
      Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
      Cuando el vector es muy grande se necesitan hacer muchas llamadas recursivas al método para ordenarlo y con cada llamada recursiva estamos consumiendo memoria. La memoria durante la ejecución del programa la obtenemos de una zona llamada heap y cuando se agota aparece el error.

  • @nazald
    @nazald 11 лет назад

    Vaya podrias haber especificado que lo ibas a hacer de forma recursiva :S

  • @dreia2405
    @dreia2405 7 лет назад

    No tiene el codigo en alguna página?

  • @Cyborsim
    @Cyborsim 11 лет назад

    ¿Hay capítulos entre el 22 y el 27? Muchas gracias.

  • @vrooomize
    @vrooomize 4 года назад

    Deberías poner los corchetes siempre, si no hace confuso el código

  • @alexandroayalac.8604
    @alexandroayalac.8604 3 года назад

    No sé qué hice mal, pero, cuando ejecuto me sale esto [I@2d363fb3 en vez de los números

  • @Shk4You
    @Shk4You 7 лет назад

    una pregunta amigo porque hay 2 return numeros al final?

    • @4X4ALTAYRK2K
      @4X4ALTAYRK2K 7 лет назад

      cuando "if" o "else" no llevan llaves, se toma en cuenta hasta la primera linea y ya no la segunda linea, por eso ves un return despues de "else" y otro return que pertenece al if que encierra todo con sus llaves.

    • @danielalejandro9393
      @danielalejandro9393 6 лет назад

      ???
      :s

  • @Z3UXGOD
    @Z3UXGOD 12 лет назад

    ESTA MUY EXCELENTE

  • @Jose__Manuel
    @Jose__Manuel 7 лет назад

    Cuando dices que es más rápido ¿a que te refieres?... En eso no lo sigo.

  • @manuelguzmancanal
    @manuelguzmancanal 12 лет назад

    me marca un error en el else

  • @RD-sp4ex
    @RD-sp4ex 3 года назад

    tu codigo no soporta 150 000 numeros

  • @bukineitor52
    @bukineitor52 8 лет назад

    disculpa, estoy seguro de que tu codigo si funciona a la perfeccion pero... hay alguna forma de hacerlo sin recursividad? esk estoy haciendo un proyecto con todos los metodos y la recursividad de tu codigo me jode todo y no se como convertirlo a mi codigo
    ayuda porfa

    • @mtzrmzia
      @mtzrmzia 8 лет назад

      pues este método funciona gracias a la recursividad, así como el ordenamiento en los arboles binarios ....

  • @reizewr
    @reizewr 11 лет назад +2

    estoy aprndiendo este metodo en mis clases, podrias prestarme tus codigos de metodos de ordenamiento porfa.

  • @wordle_23
    @wordle_23 11 лет назад

    bueno no se entiende a la primera, pero es java real.

  • @Lajaramillo2
    @Lajaramillo2 12 лет назад

    error en el else...

  • @simonbelmontful
    @simonbelmontful 10 лет назад

    buen tutorial!!!

  • @luceropamelaalave6719
    @luceropamelaalave6719 7 лет назад

    Muy buen video👍

  • @ema_gym
    @ema_gym 7 лет назад +1

    Ojo que despues de este video #22 se salta al #27, aqui esta el enlance del siguiente (#23)
    ruclips.net/video/ZoCk8w86JlU/видео.html

  • @victorfernandezflorensa7863
    @victorfernandezflorensa7863 5 лет назад

    Buen código :D (Hola Gimeno)

  • @ileanr.progra-lw9ho
    @ileanr.progra-lw9ho Год назад

    //copie el codigo pero no me corrio.
    public class Intentos{
    public static int[] arreglarArreglo(int[] _arreglo){
    return arreglarArreglo2(_arreglo, 0,(_arreglo.length-1));
    }
    private static int[] arreglarArreglo2(int _arreglo[], int izquierda, int derecha){
    // caso uno
    if (izquierda>=derecha) return _arreglo;
    // caso dos.
    int i=izquierda, d=derecha;
    if (i != d) {
    int pivote, aux;
    pivote=izquierda;
    while (izquierda!=derecha) {
    while (_arreglo[derecha]>=_arreglo[pivote] && izquierda

  • @JohnOsorio93
    @JohnOsorio93 9 лет назад

    cómo ordeno Strings, (nombres, apellidos, etc...)

  • @PostgresSql
    @PostgresSql 10 лет назад

    grato muito bem explicado seu tutorial

  • @tekkadan7673
    @tekkadan7673 6 лет назад

    Me confundí más de lo que estaba

  • @nicolasprato8581
    @nicolasprato8581 9 лет назад +14

    Deberias explicar mejor los conceptos porque la gente que trata de aprender desde cero se queda con muchas dudas y sabiendo ni siquiera la mitad de las cosas

    • @axelkakasho
      @axelkakasho 9 лет назад +13

      +john nick tienen 23 videos antes de este en el curso para que practiques, aprendas, busques por tu cuenta y llegues aquí sin estar en ceros.

    • @rodrigosandovalyou
      @rodrigosandovalyou 8 лет назад +3

      este procedimiento ya es para gente que tenga conocimientos previos a programar de lo contrario busca el algoritmo burbuja que es mas facil hace lo mismo pero es mas tardado en completar la ejecucion

    • @carlos789xel
      @carlos789xel 6 лет назад +2

      este ordenamiento no es para iniciados en programacion es mas bien para un nivel intermedio

  • @edwincervantesvega5949
    @edwincervantesvega5949 12 лет назад

    métodos de búsqueda

  • @mrthesmart92
    @mrthesmart92 12 лет назад

    mm pudes pasar tu codigo...

  • @heribertorg1991
    @heribertorg1991 8 лет назад

    oye bro y el código fuente donde lo descargo?

    • @pedromontiel323
      @pedromontiel323 8 лет назад +1

      Otoniel Heriberto Robles González nunca deja el código ese siempre lo tienes que escribir tu... O almenos eso me he dado cuenta en este blog.

  • @elgameranonimus3935
    @elgameranonimus3935 3 года назад

    yo esto no lo pillo, creo que no doy pa tanto

  • @Leslaliun
    @Leslaliun 7 лет назад +1

    no entendí un carajo

  • @AnormalDeCarrito123
    @AnormalDeCarrito123 12 лет назад

    Muy buen video! Me ayudó muchísimo ;)

  • @RiquelmeMunozSebastian
    @RiquelmeMunozSebastian 4 года назад

    la verdad viendo más tranquilamente el video, este no es como otros, la parte en powerpoint te quedó bien, pero el código como la mierda, la indentación pésima, pareciera que hubiera un while anidado dónde no lo hay y se confunde el proceso que realiza cada if o while.

  • @camilocamargo98
    @camilocamargo98 7 лет назад +14

    no entendi ni mierda

    • @yonatannperes9778
      @yonatannperes9778 7 лет назад +1

      Camilo Camargo Tmre yo tampoco :v
      Pero si el pudo entenderlo entonces por que nosotros no?

    • @victorrobles6515
      @victorrobles6515 6 лет назад

      Yonatann Peres Asi perrin, tu tambien puedes hacerlo

  • @ambrokc
    @ambrokc 11 лет назад

    amigo me podras ayudar con el metodo shell

  • @dinusc9175
    @dinusc9175 8 лет назад

    lo haces por recursividad y te ahorras sufrimirntos.

  • @vladosantiagotopcichuergo9455
    @vladosantiagotopcichuergo9455 4 года назад

    tu identacion esta hecha con las patas carnal...

  • @yeseniakaulitz
    @yeseniakaulitz 10 лет назад

    no me funiono :(