Insercion es buscar la posicion del elemento actual respecto a los elementos anteriores del arreglo. El indice i es para el elemento actual del arreglo, y el j para recorrer los anteriores del actual, es decir de i,siempre comenzando por el 0. Por eso se usan for anidados.Hay muchas formas de hacer esto, pero se me hace que la que propone el senor jorge es mas complicada de comprender. En cualquier caso es un excelente tutorial. Me ha servido de mucho,saludos: public class Ordenador { public void ordenadorInsercion(int[]array) { int aux=0; for(int i=1;i
Muy bien explicado este tipo de ordenamiento.Usastes las palabras sin confundir al estudiante.Muchisimas gracias por tu paciencia y tecnica de llegar al alumno. Desde New York un alumno tuyo.
muy bueno eehh, soy programador beta, y necesitaba las estructuras de ordenamiento y esto es muy funcinal, graciass. hasb uno del metodo shell pero q sea el algoritmo aplicado a java
No lo he entendido, sorry. Mi codigo de insercion directa: public static void insercionDirecta(int[] arreglo) { int k = 0; int auxiliar = 0; for (int i=1;iarreglo[i])//Comparo si estan ordenados { k=0; while(arreglo[k]k;j--) { arreglo[j]=arreglo[j-1];//Esto le pone a cada numero el valor del anterior } arreglo[k]=auxiliar;//Pongo el valor mal ordenado en su sitio }//Acaba el if y el intercambio }//Acaba el for grande }//Acaba la funcion
no se como hacerlo con una lista doble, por que tengo que cambiar son los nodos mas no la informacion. osea es practicamente lo mismo pero nose con listas estoy confundido
Jorge, he estado viendo todos los videos para aprender Java, por lo que antes que cualquier cosa te quería agradecer por haberlo hecho. En éste episodio en particular, te quería preguntar para que creas los dos contadores en la clase Ordenador, ya que en los vídeos anteriores has creado los contadores directamente en el ciclo "for (inti i=1...etc)", y luego anidas otro ciclo cualquiera "while(int j=0...etc)", y ocupas los valores de "i" y "j". Hay algún motivo en particular? (me refiero a crear a parte las variables contadores) Saludos!
Y también comentarte que la variable aux no es necesaria, hasta donde puedo ver, ya que array[cont1] no es modificado o alterado, por lo que se puede utilizar directamente en el for anidado array[cont2] = array[cont1] (y)
Te equivocas, la variable aux si es necesaria, ya que sin ella no se podría realizar el cambio de posición de los valores, si dejas solo array[cont2] = array[cont1] entonces el programa lo que hace es que ambas posiciones en el array tengan el mismo valor, para que no se pierda el valor de la posición cont1 se utiliza aux para después regresar el valor a la posición del array correspondiente.
muy buen vídeo, necesito ayuda me gustaría que explicaras el mismo método de inserción pero en un programa que sea de una matriz, me ayudarías mucho. Gracias y exito¡
package Ordenar; public class Insertion { public void ordenarInsercion(int[] array) { int llarg = array.length - 1; int aux; int cont1, cont2; for (cont1 = 1; cont1 < array.length; cont1++) { aux = array[cont1]; for (cont2 = cont1 - 1; cont2 >= 0 && array[cont2] > aux; cont2--) { array[cont2 + 1] = array[cont2]; array[cont2] = aux; } // mostra com s'està ordenant // es pot comentar aquet FOR, ja que es només per veure // el funcionament for (int i = 0; i < array.length; i++) { // System.out.println(array.length-1); if (i % array.length - llarg == 0) { System.out.print(array[i]); System.out.print(" "); } else { System.out.print(array[i] + ","); } } } } } Muchas gracias... Puse una FOR para ver como ordena internamente...
aux=array[i]; array[i]=array[i-1]; array[i-1]=aux; lo que hacen estas lineas es hacer el cambio: primero que nada aux tiene el valor 0 ,porque recuerda que si no se inicializa una variable entera su valor por defecto es 0 1.en la primera linea aux=array[i] lo que hace es que la variable aux tome el valor que tenga array[i], por decir si array[i] tiene el valor de 10 ,aux ahora tendra el valor de 10,por eso la variable aux esta sin inicializar para que su valor sea 0 y pueda guardar el valor del primer numero,y como array[i] le paso lo que tenia a la variable aux ,array[i] ahora tiene 0 ,miralo como un intercambio de valores las cosas quedan asi despues del intercambio: aux=10(lo que tenia array[i] originalmente) y array[i]=0(lo que tenia aux originalmente) 2.en la segunda linea array[i]=array[i-1], es lo mismo un intercambio de valores,pero ahora array[i] ya no tiene el valor 10 por que se lo paso a la variable aux,si no que array[i] ahora tiene 0,entonces array[i] obtendra lo que tenga array[i-1](que significa el numero anterior a i en el arreglo por eso se escribe array[i-1], supongamos que array[i-1] tiene el valor de 5 la cosa seria: array[i]=0; y array[i-1]=5; se hace un intercambio,entonces array[i] ahora tendra el valor de array[i-1] y array[i-1] tomara el valor de array[i] la cosa que daria asi despues del intercambio: array[i]=5; array[i-1]=0; 3.en la tercera linea array[i-1] ahora tiene 0,entonces tomara el valor de aux que es 10,que en la primera se quedo con el valor de 10 (que es lo que originalmente tenia array[i]) la variable aux es como un mediador para que array[i] intercambie su valor con array[i-1] al ultimo quedaria asi : aux=0, array[i]=5; array[i-1]=10; originalmente los valores eran: aux=0; array[i]=10; array[i-1]=5; esas 3 lineas son para que array[i] intercambie su valor con array[i-1]; te preguntaras por que no se hace de forma directa asi: array[i]=array[i-1]; es porque no funcionaria ya que un valor debe estar vacio para recibir la informacion y para eso se utiliza la variable aux ; se que es confuso pero espero que le entiendas
acabo de hacer esta tarea, y se me dio por no usar la variable aux, y igual anda, solo uso dos ciclo for, uno de cont1 uno que vaya, (a razon de incremento) y otro for de cont2 - 1 (a razon de incremento) que venga. y listo, me da los mismo resultados. ahorro 4 lineas de código XD
Insercion es buscar la posicion del elemento actual respecto a los elementos anteriores del arreglo. El indice i es para el elemento actual del arreglo, y el j para recorrer los anteriores del actual, es decir de i,siempre comenzando por el 0. Por eso se usan for anidados.Hay muchas formas de hacer esto, pero se me hace que la que propone el senor jorge es mas complicada de comprender. En cualquier caso es un excelente tutorial. Me ha servido de mucho,saludos:
public class Ordenador {
public void ordenadorInsercion(int[]array) {
int aux=0;
for(int i=1;i
05:24 "Uy se borró" xD
¡Muy bueno! :)
Muy bien explicado este tipo de ordenamiento.Usastes las palabras sin confundir al estudiante.Muchisimas gracias por tu paciencia y tecnica de llegar al alumno. Desde New York un alumno tuyo.
Excelente presentaciones, tu corso es excelente. Lo estoy impartiendo a mi grupo de trabajo
muy bueno eehh, soy programador beta, y necesitaba las estructuras de ordenamiento y esto es muy funcinal, graciass. hasb uno del metodo shell pero q sea el algoritmo aplicado a java
En serio explicas muy bien! por fin estoy entendiendo estos métodos de ordenamiento gracias!
Muchas gracias por la explicacion del ordenamiento por insercion aunque prefiero el Quicksort en java
Gracias jorge la verdad estoy aprendiendo por vos
No lo he entendido, sorry.
Mi codigo de insercion directa:
public static void insercionDirecta(int[] arreglo)
{
int k = 0;
int auxiliar = 0;
for (int i=1;iarreglo[i])//Comparo si estan ordenados
{
k=0;
while(arreglo[k]k;j--)
{
arreglo[j]=arreglo[j-1];//Esto le pone a cada numero el valor del anterior
}
arreglo[k]=auxiliar;//Pongo el valor mal ordenado en su sitio
}//Acaba el if y el intercambio
}//Acaba el for grande
}//Acaba la funcion
tan sencillo , gracias , al del video casi no le entendi XD pero igual me sirvio mucho
muy bien explicado, excelente tutorial
GRACIAS AMIGO MUY BUENA EXPLICACION ME SIRVIO DE MUCHO... SALUDOS
Muy buena, me funciono!! solamente que necesito para que me lo vea en forma grafico
y para ordenar String de la a la z como es ayuda
Excelente, corto y claro.
no se como hacerlo con una lista doble, por que tengo que cambiar son los nodos mas no la informacion. osea es practicamente lo mismo pero nose con listas estoy confundido
Muchísimas gracias, me funcionó
Jorge este si q esta bueno. Gracias
Excelente tutorial amigo!!!
Oye amigo, no hay para Ordenamiento por Inserción de matrices?
Jorge, he estado viendo todos los videos para aprender Java, por lo que antes que cualquier cosa te quería agradecer por haberlo hecho. En éste episodio en particular, te quería preguntar para que creas los dos contadores en la clase Ordenador, ya que en los vídeos anteriores has creado los contadores directamente en el ciclo "for (inti i=1...etc)", y luego anidas otro ciclo cualquiera "while(int j=0...etc)", y ocupas los valores de "i" y "j". Hay algún motivo en particular? (me refiero a crear a parte las variables contadores)
Saludos!
Y también comentarte que la variable aux no es necesaria, hasta donde puedo ver, ya que array[cont1] no es modificado o alterado, por lo que se puede utilizar directamente en el for anidado array[cont2] = array[cont1] (y)
Te equivocas, la variable aux si es necesaria, ya que sin ella no se podría realizar el cambio de posición de los valores, si dejas solo array[cont2] = array[cont1] entonces el programa lo que hace es que ambas posiciones en el array tengan el mismo valor, para que no se pierda el valor de la posición cont1 se utiliza aux para después regresar el valor a la posición del array correspondiente.
Explicas muy bieen, saludos!
muy buen vídeo, necesito ayuda me gustaría que explicaras el mismo método de inserción pero en un programa que sea de una matriz, me ayudarías mucho. Gracias y exito¡
para ordenar listas también se aplica este método?
Me ha ayudado. Gracias y muy buen video
creo que no hace falta poner cont2+1 ya que es igual a cont1
para no confundir
array[cont2+1]=array[cont2]; == array[cont1]=array[cont2];
oye gracias por la aclaración (Y)
+Java No funciona, estas equivocado.
Gracias me ha servido mucho
Gracias pana......bien ahí..............
muchas gracias!!!!! me sirvio muchisimo!!!!
¿Qué hay del método sacudida? shaker sort, gracias!
muchas grasias amigo todo entendido
Es más complicado pero más rápido que el de burbuja.
y si quiero que lo ordene de forma descendente ?
muy exelente la explicasion
Muchas gracias me sirvió mucho este vídeo
Me suscribo :D
Quisiera saber como hacer las torres de hanoi, en visual.
Gracias mi pana por el Tuto :) Saludos
el problema es que no imprime los cambios se fueron haciendo y solo tira el ordenamiento final.
Muy buen tutorial
nome aclaro nada :'(
oye no tienes de como hacer arboles binarios
Buen tuto
Hola que tal pues me parecen de ayuda los vídeos pero en esta ocasión busco un tutorial que sea de método de búsqueda hash
Interesante, gracias!
Gracias chaval
😂gracias!!😊
package Ordenar;
public class Insertion {
public void ordenarInsercion(int[] array) {
int llarg = array.length - 1;
int aux;
int cont1, cont2;
for (cont1 = 1; cont1 < array.length; cont1++) {
aux = array[cont1];
for (cont2 = cont1 - 1; cont2 >= 0 && array[cont2] > aux; cont2--) {
array[cont2 + 1] = array[cont2];
array[cont2] = aux;
}
// mostra com s'està ordenant
// es pot comentar aquet FOR, ja que es només per veure
// el funcionament
for (int i = 0; i < array.length; i++) {
// System.out.println(array.length-1);
if (i % array.length - llarg == 0) {
System.out.print(array[i]);
System.out.print("
");
} else {
System.out.print(array[i] + ",");
}
}
}
}
}
Muchas gracias... Puse una FOR para ver como ordena internamente...
Perfect my friend!!! Just that i need
muy bueno
Exito!!!
Oye no puedo ejecutar el programa :(
array[j+1]=array[j];
array[j]=aux;
que hace
aux=array[i];
array[i]=array[i-1];
array[i-1]=aux;
lo que hacen estas lineas es hacer el cambio:
primero que nada aux tiene el valor 0 ,porque recuerda que si no se inicializa una variable entera su valor por defecto es 0
1.en la primera linea aux=array[i] lo que hace es que la variable aux tome el valor que tenga array[i],
por decir si array[i] tiene el valor de 10 ,aux ahora tendra el valor de 10,por eso la variable aux esta sin inicializar para que su valor sea 0 y pueda guardar el valor del primer numero,y como array[i] le paso lo que tenia a la variable aux ,array[i] ahora tiene 0 ,miralo como un intercambio de valores
las cosas quedan asi despues del intercambio:
aux=10(lo que tenia array[i] originalmente) y array[i]=0(lo que tenia aux originalmente)
2.en la segunda linea array[i]=array[i-1],
es lo mismo un intercambio de valores,pero ahora array[i] ya no tiene el valor 10 por que se lo paso a la variable aux,si no que array[i] ahora tiene 0,entonces array[i] obtendra lo que tenga array[i-1](que significa el numero anterior a i en el arreglo por eso se escribe array[i-1],
supongamos que array[i-1] tiene el valor de 5
la cosa seria:
array[i]=0; y array[i-1]=5;
se hace un intercambio,entonces array[i] ahora tendra el valor de array[i-1] y array[i-1] tomara el valor de array[i]
la cosa que daria asi despues del intercambio:
array[i]=5; array[i-1]=0;
3.en la tercera linea array[i-1] ahora tiene 0,entonces tomara el valor de aux que es 10,que en la primera se quedo con el valor de 10 (que es lo que originalmente tenia array[i])
la variable aux es como un mediador para que array[i] intercambie su valor con array[i-1]
al ultimo quedaria asi :
aux=0, array[i]=5; array[i-1]=10;
originalmente los valores eran:
aux=0; array[i]=10; array[i-1]=5;
esas 3 lineas son para que array[i] intercambie su valor con array[i-1];
te preguntaras por que no se hace de forma directa
asi:
array[i]=array[i-1];
es porque no funcionaria ya que un valor debe estar vacio para recibir la informacion y para eso se utiliza la variable aux ;
se que es confuso pero espero que le entiendas
Hola compañeros me podrían hacer el favor de explicarme esto arreg[arr[i]]++;
me urge :(
Algun programador aqui?
acabo de hacer esta tarea, y se me dio por no usar la variable aux, y igual anda, solo uso dos ciclo for, uno de cont1 uno que vaya, (a razon de incremento) y otro for de cont2 - 1 (a razon de incremento) que venga. y listo, me da los mismo resultados. ahorro 4 lineas de código XD
??
no se te entendio un carajo amigo
Hola aqui te lo explico en lenguaje C++ ua-cam.com/video/_vt0YHNx54Q/v-deo.html Saludos.