Fua, gracias loco! Me sirvió un montón, además de que lo explicas de una manera super simple, me complementa algunas partes de la teoría que no termino de entender. Genio!
Comparando un elemento con todos los elementos del vector de una tirada supongo el de inserción: int Numeros[] = { 5,3,4,2,1 }; int i, j, aux; for (i = 0; i < 5; i++) { for (j = 0; j < 5; j++) { if (Numeros[ i ] < Numeros[ j ]) { aux = Numeros[ i ]; Numeros[ i ] = Numeros[ j ]; Numeros[ j ] = aux; } } } También se puede con el bucle for como con el Burbuja pero cambiando la comparación entre los elementos. Buenos vídeos y gracias.
Yo también lo realice con 2 ciclos for :D, pero cambiando la condición a algo más parecida a la que se usa en el while del video, gracias por ayudarme a corroborar que es un método alternativo, saludos. for(int i=1;i
Mi propia versión del algoritmo: // Ordenamiento por inserción #include using namespace std; int main(){ int Numeros[100]; int N, Auxiliar = 0; int Contador = 0; cout > N; for (int i = 0; i < N; i++){ cout 0){
Es un poco complicado de recordar. Pero lo importante es que sepan de su existencia y mas importante aun que sepan como corre, lo memorizaran con el tiempo.
Aquí se los dejo el "Ordenamiento por inserción" con Python: from random import * def generar_matriz(cant, inicio, fin): matriz = [] for i in range(cant): matriz.append(randint(inicio, fin)) return matriz matriz = generar_matriz(10,0,20) print(f"No ordenado: {matriz}") for i in range(len(matriz)): pos = i #Posicion en la matriz aux = matriz[i] #Variable Auxiliar while pos > 0 and matriz[pos - 1] > aux: #While solo cuando Posicion > 0 matriz[pos] = matriz[pos - 1] #Matriz[posicion - 1] > auxiliar pos -= 1 #Le resta uno a la posicion matriz[pos] = aux #Se le asigna "aux" a la matriz[pos] print(f"Ordenado: {matriz}")
Ale, una pregunra: ¿Sería incorrecto dejarle solo la "i" en lugar de "pos?, por ejemplo dentro del 'while' que dijera (i>0) ?
8 років тому+17
Hola :) para el algoritmo seria correcto, ya que si omites la variable pos, y utilizas solo la i, funcionaría igual, solo que para hacer más entendible el código, utilice otra variable llamado pos.
creo que no seria correcto por que restarias la i dentro del bucle y cuando saliera afuera no cogeria el numero que corresponde para analizar dentro del bucle
Hola, si alguien sería tan amable de aclararme esta duda me haría un gran favor: En el bucle while, por que se debe utilizar el aux y no directamente numeros[pos], porque estuve probando y funciona mal con el numeros [pos], pero valen lo mismo. Muchas gracias
@@JuanManuelJuradoRubik Si puedes ver dentro del bucle while a numeros[i] le asignas el valor de numeros[i-1], esto causa que tu bucle solo se ejecute una sola vez, por esta razon es importante la variable aux. Espero haberte ayudado
Si te fijas el while es un bucle, y dentro de el, el pos es pos--, cambia su valor en cada repeticion del while, mientras el while sigua cumpliendo su condicion el for no continua sus repeticiones. por eso es aux ya que no cambia el valor sin antes concluir el while
No me gustó el i=0 dentro del bucle for, ya que las condiciones en el ciclo while hacen que en la primera iteracion el arreglo sea numeros[-1] , esto deberia marcar un error pero no lo hace, en cambio si el i dentro del for es = 1 el algoritmo se mantiene, con esto la primera iteracion se puede comprobar adecuadamente.
Recuerdas que para aumentar tu contador colocabas "contador++" eso significa que tu contador aumenta en uno.. como es un ciclo se va aumentando hasta que llegue a cierto numero.. Bueno en este caso disminuye así que sería "pos- -". Además en el minuto --6:58-- explica porque pone "pos- - " .
no entiendo este código le hice una prueba de escritorio y todo marcha bien hasta que llega cuando i = 3 el números [pos] = números [pos - 1] con esto números [i] y números [i-1] quedan con el valor de 4, ya no cumple la condición números [pos-1] > aux después sale del siclo while números [pos] = aux, queda números {2,3,1,4,5} la inquietud es como ordena el 1 si ya salio del siclo while que no pasaría a seguir el siclo for e incrementar la i lo que pasaría a el ultimo ordenamiento i=4 , como pasa de salir del while y pasa a entrar de nuevo al siclo while ???????
Otrod modo de codificacion usando FOR: #include using namespace std; int main() { int A[]={3,1,9,5,6,4,7,2,8,10}; int aux; for (int i = 0; i < 10; ++i) { aux = A[i]; for (i; i > 0 && A[i-1] > aux; --i) { A[i] = A[i-1]; } A[i] = aux; } for (int k = 0; k < 10; ++k) { cout
tendrías que calcular la longitud del arreglo, luego la longitud la tendrías que almacenar en una variable, esa variable es la que tienes que condicinoar en el bucle. longitud=strlen(arreglo); for(int i=0;i
Como un reto a mi mismo decidí hacer el algoritmo sin ver el video, y creo que hice algo un poco mas simple #include int main(){ int insercion[5], aux; for(int i=0; i
For y While son bucles, ambos. Pero el for más se utiliza para una iteración con una condición más sencilla, en cambio while se utiliza cuando la condición es más compleja, ambos cumplen con crear un bucle, pero ahí está la diferencia como lo entiendo uo.
hola muchas gracias por tu tiempo y explicacion en los videos son muy entendible pero mi duda es la siguiente en vez de tener los valores en el arreglo como seria si fuesen valores introducidos directamente por el usuario es posible.? podria explicarme.
Este video de esta plataforma me ayudo a retomar temas que no sabía y mejorar un poco en mi programación respecto a este programa aplicarlo en mis actividades CECyT_14_4IV5_Ivan_Emmanuel_S
Buenas ... Comparto. Solo agregué la interacción con el usuario con ingreso de datos ideales (sin errores de entradas): /*Ordenamientos Ordenamiento por inserción */ #include #include using namespace std; int main(){ int numeros[100]; int cantNum; int i, pos, aux;
Yo no entendí muy bien si la variable pos tenía algún uso específico y lo intenté sin la variable pos. #include #include #include using namespace std; int main(){ int num[]={4,2,3,1,5}; int i,pos,aux;
aqui dejo el codigo un poco modificado para que muestre como lo va haciendo (obviamente va dentro del main nosea pendejo) int numeros[]={4,2,3,1,5}; int i,k,pos,aux;
yo lo hago igual pero dentro del bucle utilizo el metodo de la burbuja no se si esto todabia sera por inserccion //ordenamiento por inserccion #include #include using namespace std; int main(){ int numero[]={2,5,1,4,3}; int i,j,x,aux; for(i=0;i0)&&(numero[x-1]
//Ordenamiento por insercion //Para mi es mas entendible el codigo de esta forma: #include #include using namespace std; int main() { int num[] = {4,1,2,3,5}; int aux=0;
Pasos del algoritmo de ordenamiento por insercion: 1) Si el elemento es el primero i=0, ya esta ordenado 2) Pasar al siguiente elemento 3) Guardar en una variable el indice anterior i-1 4) Guardar en una variable temporal el numero actual 5) (numero izquierda) > (numero actual) SI el numero q esta a la izquierda es mayor q el numero actual (temporal) entonces intercambiar numeros, repetir este paso 5) hasta que NO se cumpla mas esta condicion 6) Continuar iteracion en el elemento actual i 7) Repetir pasos 1) hasta 6) hasta q todos los numeros esten ordenados 8) Después de los pasos anteriores el array se ordena de menor a mayor (ascendente).
//Ordenamiento por insercion #include #include using namespace std; int main(){//pos=i 0 1 2 3 4. o una felcha que recorre los valores. int numeros[]={4,2,3,1,5}; // aux=numeros{i}= (4,2,3,1,5) valores del arreglo. int i, pos, aux;// iteradores, axuliar guarda valores < // 0) 4 2 3 1 5 for(i=0;i 0 . si numeroAlaizquierda > numeroActual (cambio); numero(i=1,(2) > aux (i=1, (2) siempre sera igual while((pos>0) && (numeros[pos-1] > aux)){ //, pero si a numero le -1, es la posicion antes o sea numeros(i=0 (4)->aux(i=1(2) entonces 4>2 (cambio) 2 4 numeros[pos] = numeros [pos-1];//numeros(0) |guarda| numerosPost-1(0) 4), = numeros(0) 4) 0 pos--; // post i= 4-3-2-1-0 } numeros[pos] = aux; // almacena auxiliar para que obtenga el valor en el bucle de que numeros vamos. }
El mismo código pero pidiendo valores. #include #include #include using namespace std; int main (){ char n[5]; int i,pos,aux; //Algortimo del ordenamiento por inserción si el numero de la izquierda es mayor que el numero //actrual se cambia de lugar niz>nactual cambian cout
esta formad de hacer el metodo es correcta? #include using namespace std; int main() { int numeros[] = {2,3,5,4,1}; int a; for (int i=0; i0 && (numeros[i-1]>numeros[i])){ numeros[i]=numeros[i-1]; numeros[i-1]=a; i--; } } for (int i=0; i
Ese codigo esta algo confuso, yo hice este como lo pude entender: #include using namespace std; main() { int numeros[]={4,2,3,1,5}; int i,j,aux; for(i=0;i0 && numeros[j-1]>numeros[j]) { aux=numeros[j]; numeros[j]=numeros[j-1]; numeros[j-1]=aux; j--; } } for(i=0;i
intente hacer el método de inserción a mi manera y me salio así v: #include #include using namespace std; int main(){ int aux,c,d,var[4]={3,1,4,5}; for(c=0;cvar[c+1]){ aux=var[c+1]; var[c+1]=var[c]; var[c]=aux; c--; } } for(d=0;d
//Ordenamiento por insercion #include #include using namespace std; int main(){//pos=i 0 1 2 3 4. o una felcha que recorre los valores. int numeros[]={4,2,3,1,5}; // aux=numeros{i}= (4,2,3,1,5) valores del arreglo. int i, pos, aux;// iteradores, axuliar guarda valores < // 0) 4 2 3 1 5 for(i=0;i 0 . si numeroAlaizquierda > numeroActual (cambio); numero(i=1,(2) > aux (i=1, (2) siempre sera igual while((pos>0) && (numeros[pos-1] > aux)){ //, pero si a numero le -1, es la posicion antes o sea numeros(i=0 (4)->aux(i=1(2) entonces 4>2 (cambio) 2 4 numeros[pos] = numeros [pos-1];//numeros(0) |guarda| numerosPost-1(0) 4), = numeros(0) 4) 0 pos--; // post i= 4-3-2-1-0 } numeros[pos] = aux; // almacena auxiliar para que obtenga el valor en el bucle de que numeros vamos. }
💻 Apúntate al curso completo de Programación en C++:
Hotmart: hotmart.com/es/marketplace/productos/programacion-en-c-v0ivo/N78682741H
Qué grande que eras! Voy a llorar :'D
Tus vídeos me han ayudado muchísimo, me seguirán ayudando y ayudarán a muchas más personas en el futuro
Y lo sigue siendo
@@pedromanzueta2427 Y por siempre :'3
?
El mejor para enseñar 😭
Grande Maestro, a pesar de todo sigo aprendiendo de ti. Hasta siempre
Me costó muchísimo entenderlo, pero muy buen método, me siento orgulloso de entenderlo
Me ha costado un chingo entenderlo al 100% lo que hace cada función del ejercicio pero estoy satisfecho :v
yo teambien ^^
x3
Fua, gracias loco! Me sirvió un montón, además de que lo explicas de una manera super simple, me complementa algunas partes de la teoría que no termino de entender.
Genio!
Siempre agradecido, dejaste un gran legado
codigo con numeros aleatorios
#include
#include
#include
#include
using namespace std;
int main(){
int numeros[100],cantidad,pos,aux,aleatorio;
coutcantidad;
srand(time(NULL));
for(int i=0;i
juan sos un heróe
Gracias!!
amigo puedes optimizar tu codigo aun mas q eso
sos un ídolo en serio!! muchas gracias, estoy siguiendo todos tus vídeos
Muchas gracias Marcelo 😃 Un saludo desde Perú
@ gracias igualmente desde Paraguay!!
Comparando un elemento con todos los elementos del vector de una tirada supongo el de inserción:
int Numeros[] = { 5,3,4,2,1 };
int i, j, aux;
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
if (Numeros[ i ] < Numeros[ j ]) {
aux = Numeros[ i ];
Numeros[ i ] = Numeros[ j ];
Numeros[ j ] = aux;
}
}
}
También se puede con el bucle for como con el Burbuja pero cambiando la comparación entre los elementos. Buenos vídeos y gracias.
Yo también lo realice con 2 ciclos for :D, pero cambiando la condición a algo más parecida a la que se usa en el while del video, gracias por ayudarme a corroborar que es un método alternativo, saludos.
for(int i=1;i
Mi héroe 🫂
Me encantan tus videos, pero me he quedado esperando tu video del metodo shell, ojala puedas hacerlo pronto!!
Me han servido mucho tus videos amigo gracias a ti no e reprobado je je je je saludos.....
Fan de como lo explicas☘️
un grande mi brou😞😞
Gracias, me quedo claro, esta tarde tengo un examen!
buen vídeo, me ayudo mucho con una tarea de programación, eres bueno explicando.
era
Eres un grande! nunca me dejas de enseñar
él ha fallecido
@@KuronoJhmx aun así, miles de los que programamos seguimos aprendiendo con él :'(
Tengo una pregunta por que pone pos es decir de que el trabajo que ase pos también lo puede hacer el iterador?
Mi propia versión del algoritmo:
// Ordenamiento por inserción
#include
using namespace std;
int main(){
int Numeros[100];
int N, Auxiliar = 0;
int Contador = 0;
cout > N;
for (int i = 0; i < N; i++){
cout 0){
Auxiliar = Numeros[Contador];
Numeros[Contador] = Numeros[Contador - 1];
Numeros[Contador - 1] = Auxiliar;
Contador -= 1;
}
}
cout
Es un poco complicado de recordar. Pero lo importante es que sepan de su existencia y mas importante aun que sepan como corre, lo memorizaran con el tiempo.
dante arena y para que recordarlo? Con solo entenderlo y practicarlo unas cuantas veces se te queda
Me encantan tus vídeos !! 😀👌
Ah... 😪 Hasta ahora y a futuro me seran de ayuda sus video
Me costó 2 días entender esto al 100% XD
grande pibe, me hiciste aprobar programacion
Aquí se los dejo el "Ordenamiento por inserción" con Python:
from random import *
def generar_matriz(cant, inicio, fin):
matriz = []
for i in range(cant):
matriz.append(randint(inicio, fin))
return matriz
matriz = generar_matriz(10,0,20)
print(f"No ordenado: {matriz}")
for i in range(len(matriz)):
pos = i #Posicion en la matriz
aux = matriz[i] #Variable Auxiliar
while pos > 0 and matriz[pos - 1] > aux: #While solo cuando Posicion > 0
matriz[pos] = matriz[pos - 1] #Matriz[posicion - 1] > auxiliar
pos -= 1 #Le resta uno a la posicion
matriz[pos] = aux #Se le asigna "aux" a la matriz[pos]
print(f"Ordenado: {matriz}")
Gracias 👍
ayuda aux=numero[i] como que va guardar la pregunta que va al macenar aso no entiendo?
Buen video, al principio me costó entender como hacerlo pero después ya
Cecyt 14,4IV6, Jessica Álvarez
en el cecyt les enseñan esto?, yo soy de la carrera de ing. en sistemas y apenas lo estoy viendo. Incredibol... Saludos
Que estudian en el cecyt? perdón la ignorancia xd
Gracias por la ayuda uwu
Messirvio el video
Ale, una pregunra: ¿Sería incorrecto dejarle solo la "i" en lugar de "pos?, por ejemplo dentro del 'while' que dijera (i>0) ?
Hola :) para el algoritmo seria correcto, ya que si omites la variable pos, y utilizas solo la i, funcionaría igual, solo que para hacer más entendible el código, utilice otra variable llamado pos.
Gracias(:
de nada Gloria :)
Estaba por comentar lo mismo hasta que vi tu comentario jaja.
creo que no seria correcto por que restarias la i dentro del bucle y cuando saliera afuera no cogeria el numero que corresponde para analizar dentro del bucle
alguien sabe de otro curso libro o material que me ayude con este tema de algoritmos? gracias!
loco el link de este video es del ejercicio anterior, o sea del metodo burbuja!
no se si es intencional o no.
Saludos. desde Venezuela!!
acabo de corregir el link :)
Gracias CAPO !!
Hola, si alguien sería tan amable de aclararme esta duda me haría un gran favor:
En el bucle while, por que se debe utilizar el aux y no directamente numeros[pos], porque estuve probando y funciona mal con el numeros [pos], pero valen lo mismo. Muchas gracias
Yo en realidad no utilicé el pos, simplemente utilicé la variable i, ahora adejo mi programa
#include}
#include
using namespace std;
int main(){
int numeros[]={3,4,5,1,2},aux,i;
for(i=0;i0) && (numeros[i-1] > numeros[i])){
numeros[i] = numeros[i-1];
i--;
}
numeros[i]=aux;
}
for(i=0;i
@@JuanManuelJuradoRubik Si puedes ver dentro del bucle while a numeros[i] le asignas el valor de numeros[i-1], esto causa que tu bucle solo se ejecute una sola vez, por esta razon es importante la variable aux.
Espero haberte ayudado
Si te fijas el while es un bucle, y dentro de el, el pos es pos--, cambia su valor en cada repeticion del while, mientras el while sigua cumpliendo su condicion el for no continua sus repeticiones. por eso es aux ya que no cambia el valor sin antes concluir el while
Mi forma:
int main(){
int arreglo[5];
int longitud = sizeof(arreglo) / sizeof(arreglo[0]);
for(int i = 0; i
TE AMO
Como puedo ordenar una matriz solo las columnas y solo las filas
numeros[post] no tenia el valor de numero[post-1], por que despues se le puede añadir el valor de axiliar como si estuviera vacia.
porque tengo que ponerle i=1 para que me pueda imprimir igual?
No me gustó el i=0 dentro del bucle for, ya que las condiciones en el ciclo while hacen que en la primera iteracion el arreglo sea numeros[-1] , esto deberia marcar un error pero no lo hace, en cambio si el i dentro del for es = 1 el algoritmo se mantiene, con esto la primera iteracion se puede comprobar adecuadamente.
Hola, oye es normal que tenga error de ordenamiento con más de 10 números?
A mi no me presento error.
Gracias.
Hola doc , porque en el codigo colocas pos - - ? cual es la explicacion? gracias
Recuerdas que para aumentar tu contador colocabas "contador++" eso significa que tu contador aumenta en uno.. como es un ciclo se va aumentando hasta que llegue a cierto numero.. Bueno en este caso disminuye así que sería "pos- -". Además en el minuto --6:58-- explica porque pone "pos- - " .
Gracias, me ayudaste tengo un examen
genial !!
Aldebaran M.4IV6.CECYT 14. Este vídeo me encello usar el ordenamiento de inserción.
Explica muy bien, pero muy rapido, yo soy de lento aprendizaje kkrnal. Espero que te encuentres bien donde sea que estés =(
Se murió
@@marseloramirez1317 ya c
no entiendo este código le hice una prueba de escritorio y todo marcha bien hasta que llega cuando i = 3 el números [pos] = números [pos - 1] con esto números [i] y números [i-1] quedan con el valor de 4, ya no cumple la condición números [pos-1] > aux después sale del siclo while números [pos] = aux, queda números {2,3,1,4,5} la inquietud es como ordena el 1 si ya salio del siclo while que no pasaría a seguir el siclo for e incrementar la i lo que pasaría a el ultimo ordenamiento i=4 , como pasa de salir del while y pasa a entrar de nuevo al siclo while ???????
Tienes razón, me pasó lo mismo
despues de salir del bucle while, pos decrementa su valor en 1 y cambia el valor de numeros[pos]
Se me complico al principio pero me resultó útil para realizar mi tarea,cecyt 14,4IV6,Carlos Mendoza
Otrod modo de codificacion usando FOR:
#include
using namespace std;
int main() {
int A[]={3,1,9,5,6,4,7,2,8,10};
int aux;
for (int i = 0; i < 10; ++i) {
aux = A[i];
for (i; i > 0 && A[i-1] > aux; --i) {
A[i] = A[i-1];
}
A[i] = aux;
}
for (int k = 0; k < 10; ++k) {
cout
como puedo hacer utilizando while o do while?
Algo mas que aprender buen vídeo. cecyt 14 "Luis Enrique Erro" Carlos M 4IV6
como puedo hacer que el bucle funcione con cualquier tamaño de arreglo?
tendrías que calcular la longitud del arreglo, luego la longitud la tendrías que almacenar en una variable, esa variable es la que tienes que condicinoar en el bucle. longitud=strlen(arreglo); for(int i=0;i
Como un reto a mi mismo decidí hacer el algoritmo sin ver el video, y creo que hice algo un poco mas simple
#include
int main(){
int insercion[5], aux;
for(int i=0; i
Hice exactamente lo mismo jaja
y que diferencia hay con el ordenamiento por inserción "con intercambio"? alguien sabe?
El ordenamiento por inserción es más eficiente que el método de burbuja/intercambio.
No hace falta declarar post en el codigo, simplemente usas i
hola un video en el cual mododifiques un arreglo
Este tema me gusto mucho Cecyt 14 Luis Enrique Erro, Areli Mendoza, 4iv5
Podría hacer también del ordenamiento quickchof
Bien explicado
si le pido al usuario insertar los número, como sería? o sea no necesariamente del 1 al 5
Charrytaker InFaGames.com/
int n;
coutn;
int numeros[n];
for(int i=0; i
#include
#include
using namespace std;
int main(){
int n,aux,pos;
coutn;
int numeros[n];
for(int i=0; i
@@Adolin.Kholin. me sirvio mucho tu ejemplo gracias!!!
@@aliciamedina567 no hay de que
Amigos, no puedo entender porqué el ordenamiento de burbuja requiere 2 for y el de inserción sólo uno. Ayuda :(
For y While son bucles, ambos. Pero el for más se utiliza para una iteración con una condición más sencilla, en cambio while se utiliza cuando la condición es más compleja, ambos cumplen con crear un bucle, pero ahí está la diferencia como lo entiendo uo.
hola muchas gracias por tu tiempo y explicacion en los videos son muy entendible pero mi duda es la siguiente en vez de tener los valores en el arreglo como seria si fuesen valores introducidos directamente por el usuario es posible.? podria explicarme.
seria lo mismo, podes hacer q el usuario los digite, usas un for para q digite los 'n' numeros q quieres
#include
#include
using namespace std;
int main(){
int n,aux,pos;
coutn;
int numeros[n];
for(int i=0; i
Cecyt 14 Carlos Paredes 4iv5 Aprendi el ordenamiento por inserción
En que numero de video se empiezan a ver subprogramas
Este video de esta plataforma me ayudo a retomar temas que
no sabía y mejorar un poco en mi programación respecto a este programa
aplicarlo en mis actividades
CECyT_14_4IV5_Ivan_Emmanuel_S
que significa?
I lovio
Es un buen video,explica muy bien
Ximena M 4IV5 cecyt 14
Buenas ...
Comparto. Solo agregué la interacción con el usuario con ingreso de datos ideales (sin errores de entradas):
/*Ordenamientos
Ordenamiento por inserción
*/
#include
#include
using namespace std;
int main(){
int numeros[100];
int cantNum;
int i, pos, aux;
cout
Yo no entendí muy bien si la variable pos tenía algún uso específico y lo intenté sin la variable pos.
#include
#include
#include
using namespace std;
int main(){
int num[]={4,2,3,1,5};
int i,pos,aux;
for(i=0; i0) && num[i-1]>num[i]){
num[i]=num[i-1];
num[i-1]=aux;
i--;
}
}
cout
aqui dejo el codigo un poco modificado para que muestre como lo va haciendo
(obviamente va dentro del main nosea pendejo)
int numeros[]={4,2,3,1,5};
int i,k,pos,aux;
for(i=0;i0 && numeros[pos-1]>aux)
{
numeros[pos]=numeros[pos-1];
pos--;
}
numeros[pos]=aux;
for(k=0;k
NICE!!
cecyt 14 4IV5 Gabriela M.
me parecio muy entretenido y curioso el video
Vean situaciones, no solo números, ayuda mucho XD
yo lo hago igual pero dentro del bucle utilizo el metodo de la burbuja no se si esto todabia sera por inserccion
//ordenamiento por inserccion
#include
#include
using namespace std;
int main(){
int numero[]={2,5,1,4,3};
int i,j,x,aux;
for(i=0;i0)&&(numero[x-1]
quiero saber la explicacion del metodo de MergeSort con una explicacion (teoría) y ejemplo (bien explicado)
Estudia a tu cuenta BURRO!
El ordenamiento por Inserciones muy útil
CECyT_14_4IV6_Jesús_García
#include
using namespace std;
int cantidad, *dir_cantidad;
void pedir_datos();
void mostrar_arreglo(int,int*);
void ordenando(int, int*);
void ordenado(int, int*);
int main()
{
pedir_datos();
mostrar_arreglo(cantidad, dir_cantidad);
ordenando(cantidad, dir_cantidad);
ordenado(cantidad, dir_cantidad);
system("pause");
return 0;
}
void pedir_datos()
{
cout > cantidad;
dir_cantidad = new int[cantidad];
cout > *(dir_cantidad + i);
}
}
void mostrar_arreglo(int num_max, int* inicio)
{
cout
// ordenamiento por insercion
#include
using namespace std;
int main(){
int numero[]={3,5,2,1,4},i,j,aux;
for(i=0;i
CECyT #14.
4iv6.
Brenda Hernández.
Me gustó este tutorial, aunque creo que debería verlo algunas veces mas para entenderle mejor.
//Ordenamiento por insercion
//Para mi es mas entendible el codigo de esta forma:
#include
#include
using namespace std;
int main()
{
int num[] = {4,1,2,3,5};
int aux=0;
for(int i=1;i
Muchas gracias. Utilice el código del video y no me funciono, tu código me funcionó perfecto !
TIENES EJEMPLOS metodo shell
Pasos del algoritmo de ordenamiento por insercion:
1) Si el elemento es el primero i=0, ya esta ordenado
2) Pasar al siguiente elemento
3) Guardar en una variable el indice anterior i-1
4) Guardar en una variable temporal el numero actual
5) (numero izquierda) > (numero actual)
SI el numero q esta a la izquierda es mayor q el numero actual (temporal) entonces intercambiar numeros, repetir este paso 5) hasta que NO se cumpla mas esta condicion
6) Continuar iteracion en el elemento actual i
7) Repetir pasos 1) hasta 6) hasta q todos los numeros esten ordenados
8) Después de los pasos anteriores el array se ordena de menor a mayor (ascendente).
Yo lo hice de esta forma:
#include
#include
using namespace std;
int main ()
{
int vector[]={5,3,4,1,2},band=0;
for(int j=0 ; j
¿Esto se considera el Bucket Sort? 0:
No logro entender al 100 como funciona el codigo
//Ordenamiento por insercion
#include
#include
using namespace std;
int main(){//pos=i 0 1 2 3 4. o una felcha que recorre los valores.
int numeros[]={4,2,3,1,5}; // aux=numeros{i}= (4,2,3,1,5) valores del arreglo.
int i, pos, aux;// iteradores, axuliar guarda valores <
// 0) 4 2 3 1 5
for(i=0;i 0 . si numeroAlaizquierda > numeroActual (cambio); numero(i=1,(2) > aux (i=1, (2) siempre sera igual
while((pos>0) && (numeros[pos-1] > aux)){ //, pero si a numero le -1, es la posicion antes o sea numeros(i=0 (4)->aux(i=1(2) entonces 4>2 (cambio) 2 4
numeros[pos] = numeros [pos-1];//numeros(0) |guarda| numerosPost-1(0) 4), = numeros(0) 4) 0
pos--; // post i= 4-3-2-1-0
}
numeros[pos] = aux; // almacena auxiliar para que obtenga el valor en el bucle de que numeros vamos.
}
cout
en el programa deje comentarios de como yo lo entedi.
El mismo código pero pidiendo valores.
#include
#include
#include
using namespace std;
int main (){
char n[5];
int i,pos,aux;
//Algortimo del ordenamiento por inserción si el numero de la izquierda es mayor que el numero
//actrual se cambia de lugar niz>nactual cambian
cout
como le hago para que el usuario ingrese los numeros?
Así:
int n;
//Para el número de elementos que quieras.
int aux;
coutn;
cout
Aunque el tema se entendió costo trabajo ver como funciona Laura C. CECyT 14 4IV6
para imprimirlo usando el printf como quedaria? alguien que me pueda explicar por favor
puedes imprimirlo haciendo un bucle que recorra el array y lo imprima
¿Este algoritmo es valido como ordenamiento por inserción?
for(int i=1; i0; j--){
if(num[j-1]>num[j]){
aux = num[j];
num[j] = num[j-1];
num[j-1] = aux;
}
}
}
Sí.
No, es burbuja ese metodo
TIENE UN ERROR EL CÓDIGO
DEBE DE QUEDAR ASI:
for(int i = 1; i0) && (numeros[pos-1]>aux))
{
numeros[pos] = numeros[pos-1];
numeros[pos-1] = aux;
pos--;
}
}
@@dreaming7164 si ingresas número diferentes o una cantidad mas grande no sirve
@@dreaming7164 brother, cambia los números con los que hace el ejemplo, al menos unas 3 veces y me dices si se ordena
fulll complicado.. debo analizarlos mas
esta formad de hacer el metodo es correcta?
#include
using namespace std;
int main()
{
int numeros[] = {2,3,5,4,1};
int a;
for (int i=0; i0 && (numeros[i-1]>numeros[i])){
numeros[i]=numeros[i-1];
numeros[i-1]=a;
i--;
}
}
for (int i=0; i
Ese codigo esta algo confuso, yo hice este como lo pude entender:
#include
using namespace std;
main()
{
int numeros[]={4,2,3,1,5};
int i,j,aux;
for(i=0;i0 && numeros[j-1]>numeros[j])
{
aux=numeros[j]; numeros[j]=numeros[j-1]; numeros[j-1]=aux;
j--;
}
}
for(i=0;i
nos falto la tarea para saber si entendimos
El anterior no lo pude hacer solo, pero este sí, así lo hice:
int main(void){
int numeros[]= {4,5,1,3,2};
int aux;
for (int i=1; i0 && numeros[x]
y como hago si son con numeros al azar?
A alguien mas no le imprime nada?
intente hacer el método de inserción a mi manera y me salio así v:
#include
#include
using namespace std;
int main(){
int aux,c,d,var[4]={3,1,4,5};
for(c=0;cvar[c+1]){
aux=var[c+1];
var[c+1]=var[c];
var[c]=aux;
c--;
}
}
for(d=0;d
NO entiendo, ayuda
//Ordenamiento por insercion
#include
#include
using namespace std;
int main(){//pos=i 0 1 2 3 4. o una felcha que recorre los valores.
int numeros[]={4,2,3,1,5}; // aux=numeros{i}= (4,2,3,1,5) valores del arreglo.
int i, pos, aux;// iteradores, axuliar guarda valores <
// 0) 4 2 3 1 5
for(i=0;i 0 . si numeroAlaizquierda > numeroActual (cambio); numero(i=1,(2) > aux (i=1, (2) siempre sera igual
while((pos>0) && (numeros[pos-1] > aux)){ //, pero si a numero le -1, es la posicion antes o sea numeros(i=0 (4)->aux(i=1(2) entonces 4>2 (cambio) 2 4
numeros[pos] = numeros [pos-1];//numeros(0) |guarda| numerosPost-1(0) 4), = numeros(0) 4) 0
pos--; // post i= 4-3-2-1-0
}
numeros[pos] = aux; // almacena auxiliar para que obtenga el valor en el bucle de que numeros vamos.
}
cout
ponlo en c++ para que entiendas mejor los comentarios. deje comentario que indicar el porque se uso cada funcion.