The::Beastieux

Sangre de Bestia + Corazón de Pingüino | Un blog acerca de Linux, *BSD, Open Source, Software Libre, Programación …

Métodos de ordenamiento hecho en C++


Acabo de encontrar los codigos que habia escrito en C++, sobre tipos de ordenamiento, les servirá para algo.

Método shell: Ordenamiento Shell.cpp
Método quick sort: Ordenamiento por método Quick Sort.cpp
Método Inserción Directa: Ordenamiento por inserción Directa.cpp
Método Inserción Binaria: Ordenamiento por inserción Binaria.cpp
Método Heap sort: Ordenamiento por Heap Sort.cpp
Método de Selección: Ordenamiento método Selección.cpp
Método Radix: Ordenamiento por método Radix.cpp (Nuevo)
Método Burbuja: Ordenamiento por método Burbuja.cpp (Nuevo)

Esta es la librería que los 6 primero métodos lo utilizan (El cual también se encuentra adjuntado con cada código):

Librerias: leearreglo.h

Nuevo: Veo el interés por este tema, así que les dejo una publicación que realicé explicando ventajas y desventajas por cada tipo de ordenamiento. Aquí

También te puede Interesar:

Métodos de Ordenamiento en java

About these ads

109 Respuestas a “Métodos de ordenamiento hecho en C++

  1. Ultra Slim Patch Weight Loss Program junio 9, 2013 en 3:03 am

    It’s genuinely very complex in this busy life to listen news on Television, thus I only use the web for that purpose, and obtain the latest news.

  2. quick weight loss junio 6, 2013 en 7:19 am

    I’d like to thank you for the efforts you have put in penning this blog. I am hoping to see the same high-grade content from you later on as well. In truth, your creative writing abilities has encouraged me to get my very own site now ;)

  3. cheap life insurance without exam mayo 24, 2013 en 12:36 am

    I believe what you wrote was very reasonable. But, what about this?
    suppose you were to write a killer title? I am not suggesting your content
    isn’t good., but suppose you added a title that makes people want more? I mean Métodos de ordenamiento hecho en C++ | The::Beastieux is a little boring. You should peek at Yahoo’s front page and watch how they create news titles to get
    viewers to open the links. You might add a related video
    or a related pic or two to get readers interested about everything’ve got to say. Just my opinion, it would bring your posts a little livelier.

  4. car insurance monthly bill mayo 21, 2013 en 12:48 pm

    Unquestionably believe that which you said. Your favorite justification appeared to be
    on the web the easiest thing to be aware of. I
    say to you, I certainly get annoyed while people consider worries that they just do
    not know about. You managed to hit the nail upon the top
    as well as defined out the whole thing without having side-effects ,
    people can take a signal. Will likely be back to get more.
    Thanks

  5. diet plan high in fiber and protein mayo 14, 2013 en 9:28 am

    Greetings from Idaho! I’m bored at work so I decided to browse your blog on my iphone during lunch break. I love the information you provide here and can’t wait to take a look when I
    get home. I’m surprised at how quick your blog loaded on my cell phone .. I’m not even
    using WIFI, just 3G .. Anyways, amazing site!

  6. juju mayo 22, 2012 en 9:21 pm

    que aburrido pero hay que hacer tarea jiji nel esto es la ley

  7. prisma elizabeth abril 20, 2012 en 2:38 pm

    hola … algien me puede ayudar mi mis me puso a hacer un programa de todos los k ya tengo uno solo usando el metodo burbuja….y no entiendo

    • Ricardo abril 20, 2012 en 2:47 pm

      jaja q kieresz prisma posz sii nii stasz asiiendo nada..:A:A

  8. Ricardo abril 20, 2012 en 2:37 pm

    OLA AMIGUITOSZ..:D

    • prisma elizabeth abril 20, 2012 en 2:47 pm

      deajate de kosas riki porfas esplikame

      • Ricardo abril 20, 2012 en 2:48 pm

        bueno sta biien compañeritosz..;):P:A:A

  9. prisma elizabeth abril 20, 2012 en 2:36 pm

    holis :)

  10. Ricardo abril 20, 2012 en 2:36 pm

    ola amiguitosz..(H)

  11. Alexandra marzo 5, 2012 en 7:16 pm

    Hola quisiera saber si me puedes colaborar adaptando el ordenamiento, pero para ordenar objetos…Gracias
    Esto es lo que tengo pero me falla y no se por que.
    ////////////////////////////////////////////////////////////////////////////////////
    Persona aux;
    for(i=0;i<(n-1);i++)
    {
    posm=i;
    men=Per[i].getCedula();
    for(k=i+1;k Per[k].getCedula())
    {
    men=Per[k].getCedula();
    posm=k;
    }

    aux=Per[i];
    Per[i]=Per[posm];
    Per[posm]=aux;
    }
    }
    ///////////////////////////////////////////////////////////////////////////////////

    • prisma elizabeth abril 20, 2012 en 2:49 pm

      checa bien los puntos y las comas algunas veses por eso falla :) o kuando tienes mayuskulas y minuskulas en algun lado :)

  12. carlos delgado octubre 2, 2011 en 9:53 pm

    Hola quisiera este programa pero que solo funcione con un solo for y que este explicado.
    Agradecería muchísimo si alguien lo publica.
    Saludos

  13. jose 1981 julio 8, 2011 en 8:55 pm

    El Método Burbuja no me funciona me tira varios errores:
    “/usr/bin/make” -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
    make[1]: se ingresa al directorio «/home/jose/NetBeansProjects/Método Burbuja»
    “/usr/bin/make” -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/m_todo_burbuja
    make[2]: se ingresa al directorio «/home/jose/NetBeansProjects/Método Burbuja»
    mkdir -p build/Debug/GNU-Linux-x86
    rm -f build/Debug/GNU-Linux-x86/main.o.d
    g++ -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.cpp
    main.cpp:18:6: warning: trigraph ??( ignored, use -trigraphs to enable
    main.cpp:18:9: warning: multi-character character constant
    main.cpp:18:13: warning: trigraph ??) ignored, use -trigraphs to enable
    main.cpp: In function ‘int main()’:
    main.cpp:18:6: error: expected initializer before ‘?’ token
    main.cpp:24:6: error: ‘n’ was not declared in this scope
    main.cpp:30:4: error: ‘n’ was not declared in this scope
    main.cpp:36:7: error: ‘n’ was not declared in this scope
    make[2]: *** [build/Debug/GNU-Linux-x86/main.o] Error 1
    make[2]: se sale del directorio «/home/jose/NetBeansProjects/Método Burbuja»
    make[1]: *** [.build-conf] Error 2
    make[1]: se sale del directorio «/home/jose/NetBeansProjects/Método Burbuja»
    make: *** [.build-impl] Error 2

    todo empieza aquí en: la linea 18 int n??(‘cn’??); si existe un remplazo porfa díganme porque ya probé con varias formas.

    • José Guerrero octubre 3, 2011 en 7:39 am

      El método de la burbuja, el más ineficiente de todos los métodos de ordenamiento pero útil para muchos casos, lo encuentras reseñado en muchos sitios de la web y libros de programación. Es muy fácil de implementar.

  14. Brian mayo 2, 2011 en 7:53 pm

    Hola necesito ayuda con un programa muy complicado (almenos para mi si) en Dev-C++ se trata de esto: programa que: “de la posibilidad de ordenar un arreglo de numeros (enteros y decimales) por algun metodo de ordenamiento seleccionado por el usuario…
    1. Burbuja
    2. Seleccion
    3. Inserccion
    4. Quickshort
    …independientemente del metodo elegido debera indicarse los siguientes resultados”
    1. tiempo de ordenamiento
    2. cantidad de comparaciones
    3. cantidad de intercambios
    4. arreglo resultante “ordenado”

    sinceramente no se como hacerlo haber si alguien me puede ayudar por favor

    • BeAsTiEuX mayo 3, 2011 en 3:08 am

      Como estás Brian, ahi tienes todos los métodos que necesitas, para ello solo deberías hacer un código para un menu, podrias usar la estructura de case
      y llamar a cada uno de los códigos según elijas, para la cantidad de comparaciones basta con crear una variable que incrementará antes de la función de comparación, y la cantidad de intercambios cuando entra a la función de comparación.

      int numComparaciones=0;
      int numIntercambios=0;

      numComparaciones++;

      if(n[j]>n[j+1])
      {
      k=n[j+1];
      n[j+1]=n[j];
      n[j]=k;
      numIntercambios++;
      }

      Para calcular el tiempo de ordenamiento/ejecución declara al inicio la librería time.h: #include

      clock_t t_ini, t_fin;
      double tiempo;
      t_ini = clock(); //inicia contador de tiempo
      /* …aquí se ejecuta el ordenamiento… */
      t_fin = clock(); //finaliza contador de tiempo

      tiempo = (double)(t_fin – t_ini) / CLOCKS_PER_SEC;

      la precisión creo no es tan exacta, pero también de penderá del medio donde ejecutes el código, para que hagas una comparación eficiente deberás ejecutar todos en el mismo ordenador con los recursos del medio que sean iguales para todos.

  15. jeamileth garcia diciembre 2, 2010 en 9:50 pm

    hola necesito de su ayuda con un programa q contenga los metodos de ordenamiento incluyendole funciones esq casi lo manejo. bien! muxhas graxias de antemano!!

    • BeAsTiEuX diciembre 3, 2010 en 12:15 am

      hola jeamileth, los códigos que he realizado están organizados en funciones, o no se a k te refieres o.o … saludos!!

  16. punky noviembre 23, 2010 en 5:46 pm

    oigan me mandaron a averiguar sobre el metodo de ordenamiento “switch” alguien podria decirme en ke consiste? o darme un ejemplo para trabajarlo?

    • BeAsTiEuX noviembre 23, 2010 en 11:17 pm

      Hola punky, la verdad k no conocía el método switch, O-O, de todas maneras voy a informarme, un saludo…

  17. José Guerrero septiembre 13, 2010 en 10:59 pm

    Gracias también a ti. Ya probé lo que me dijistes. Por cierto, vi el logotipo de tu avatar y caí en cuenta de que era de PCBSD. Instalé la versión 8.1 x64 en mi equipo y funciona muy bien. Nunca había trabajado con BSD y tampoco me fue muy difícil incluirlo en el grub2 de Debian.

    Saludos

  18. José Guerrero septiembre 8, 2010 en 9:06 pm

    Por cierto, con código resaltado, disponible en WordPress.com, es más fácil acceder a el porque se puede copiar rápidamente al portapapeles. He aquí un ejemplo:

    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    int main () {
    
      cout << "Hola, mundo\n";
    
      system ("pause");
    
      return 0;
    
    }
    

    Saludos

    • BeAsTiEuX septiembre 8, 2010 en 11:50 pm
      int main(void)
      {
      ...
      	cout<<"Cadena de numeros enteros:\n";
      	for (n = 0;; n++)
      	{
      		cin>>x[n]; 
      		if(x[n]==-1)
      			break;
      	}
      	
      ...
      }
      

      ingresa un numero uno después de otro separándolos con enter, ingresando -1 termina de pedirte datos…

      Thanks por la info del resaltado de los códigos, espero poder actualizar los posteados en el blog.

      Saludos!

  19. José Guerrero septiembre 8, 2010 en 8:59 pm

    El programa de ordenamiento radix compila pero cuál sería un ejemplo de la cadena numérica a introducir.

    Saludos

  20. adrian agosto 19, 2010 en 10:40 am

    necesito q m ayuden
    con un programa
    q ordene x numeros de menor a mayor con el metodo shell
    en dev-c++

  21. juanoy julio 21, 2010 en 8:41 pm

    hola me a servudo mucho sus codigos, pero tengo un problema el heap sort no me funciona en c++ lo tengo asi:
    #include
    #define max 100
    using namespace std;

    int main()
    {
    int A[max],j,item,temp,i,k,n;
    cout<>n;
    for(i=1;i> A[i];

    for(k=n;k>0;k–)
    {
    for(i=1;i0 && A[j]<item)
    {
    A[i]=A[j];
    i=j;
    j=j/2;
    }
    A[i]=item;
    }
    temp=A[1];
    A[1]=A[k];
    A[k]=temp;
    }
    cout<<"El orden es:"<<endl;
    for(i=1;i<=n;i++){
    cout<<"Ingrese el elemento "<<i<> A[i];
    }
    system(“pause”);
    return 0;
    }

    ojala me puedan ayudar, lo otro es que el link para ver el metodo burbuja no funciona ya :/.
    gracias de antemano muy buen blog para comprender este tipo de algoritmos
    saludos

    • BeAsTiEuX julio 21, 2010 en 9:19 pm

      hola juanoy, vi la primera linea y te falta validar bien el include:

      #include
      Saludos, por cierto el link ya está corregido. Suerte!

  22. Anónimo julio 14, 2010 en 3:23 pm

    GRacias Por los programas son los mejores muchas gracias por la ayudan que proporcionan

  23. sAfOrAs junio 19, 2010 en 2:25 pm

    andres, puedes ver éste ejemplo:

    Ordenar Números con Burbuja
  24. andres junio 19, 2010 en 1:38 pm

    lo nesesito urgente porfa ok …

  25. andres junio 19, 2010 en 1:37 pm

    quisiera un ejemplo de metodo buble sort en c++ para ordenar de mayor a menor y de mayor a menor 3,11,2,9,1por fabor mandamelo a mi correo por fabor amix

  26. avi junio 18, 2010 en 7:27 pm

    SERA QEUM E PUEDEN AYUDAR LA VERDAD ES QUE TENGO QUE CREAR UN PROGRAMA QUE ME ORDENE MIL NUMEROS QEU SE ENCUENTREN EN UN FICHERO CON LOS SIGUIENTES METODOS:
    METODO DE BURBUJA
    METODO QUICK SORT
    METODO DE SELECCION DIRECTA
    METODO INSORT (o INSERCION DIRECTA)

    PORFAVOR SI ALGUIEN M PODRIA AYUDAR SE LO AGRADECERIA MUCHO EN VERDAD ME URGE PORFA AYUDENME MI CORREO ES <>

  27. Anónimo junio 2, 2010 en 6:18 pm

    6yyhyu

  28. soledad mayo 30, 2010 en 2:08 pm

    ola
    tengo un problema esque estamos usando dev-c++ para hacer los programas pero aora que tenemos que utilizar la instruccion gotoxy no se como ponerla porque no la agarra y con el programa que muestran de shell nome corre
    grax de antemano y espero respuesta rapida

  29. antonio mayo 18, 2010 en 6:56 pm

    oye una pregunta cuando trato de corres tus codigo en visual c++ 2008 expres ediccion me sale error este

    fatal error C1083: Cannot open include file: ‘leearreglo.h’: No such file or directory

    como lo puedo solucionar

    el codigo es el shell lo probe conlos demas y me sale lo mismo

    • sAfOrAs mayo 18, 2010 en 11:40 pm

      el error es pq no has incluido la libreria leearreglo.h, es indispensable que lo incluyas en tu proyecto, no se si existe un directorio especial para hacerlo, pero me imagino k si, como headers o libraries…
      suerte

  30. sAfOrAs abril 29, 2010 en 1:11 am

    ahi tienes el código, es sencillo, con una simple prueba de escritorio puedes darte cuenta lo k hace…

  31. panfila jilomena abril 28, 2010 en 6:38 pm

    hola

    kieroo

    saberrrr

    sobre

    insersion

    lo

    ke

    pasa

    es

    kee

    miii

    profesorrrrrr

    deja

    kee

    noooosss

    injeniemossss

    solosss

    y

    esoo

    noo

    es

    justooo

    por esoo

    es

    ke

    kiero

    kee

    me

    ayuden

    esperooo

    respuestaa

    graciassss

    .

    .

    .

    • Anónimo abril 20, 2012 en 2:31 pm

      no kiero.:A:A

  32. goyo abril 28, 2010 en 9:23 am

    quiten esto por q ni sirve

  33. paola abril 11, 2010 en 12:49 pm

    disculpa necesito el metodo del ordenacion externa el metodo polifasico en verdad no lo encuentro por ningun lado, de verdad es urgente te agradecderia mucho si lo publicas, si codificacion, gracias.!!!

  34. david ... febrero 15, 2010 en 5:25 pm

    espero les sirva

  35. liz paola febrero 1, 2010 en 4:46 pm

    quiero porfa ayuda parz mi exposicion de metodo de ordenamiento por insercion n0 tngo nada y m voya aplasar xfanaaaaaaa

    • david ... febrero 15, 2010 en 5:22 pm

      #include
      #include
      #include

      int i,j,aux,n;
      int ARREGLO[' '];
      void leer();
      void ordenar(int n,int ARREGLO[' ']);
      void mostrar(int n,int ARREGLO[' ']);

      main()
      {
      int opc;

      do
      {
      cout<<"1.- Leer."<<endl;
      cout<<"2.- Ordenar ."<<endl;
      cout<<"3.- Mostrar ."<<endl;
      cout<<"4.- Salir."<<endl<<endl;
      cout<>opc;
      cout<<endl;
      switch(opc)
      {
      case 1: leer(); break;
      case 2: ordenar(n,ARREGLO); break;
      case 3: mostrar(n,ARREGLO); break;
      case 4: break;
      }
      }while(opc!=4);
      }

      void leer()
      {
      cout<<"ingrese el numero de elementos q desea"<>n;
      cout<<endl;
      for(i=0;i<n;i++)
      {
      cout<<"Teclee el elemento "<<(i+1)<<" :"<>ARREGLO[i];
      cout<<endl;
      }
      }

      void ordenar(int n,int a[' '])
      {
      int menor;
      for(i=0;i<(n-1);i++)
      {
      menor = a[i];
      int avanza=i+1;
      int pos=i;
      while (avanza<n)
      {
      if (menor < a[avanza])
      {

      }
      else
      {
      menor= a[avanza];
      pos=avanza;
      }
      avanza ++;
      }
      aux = a [pos];
      a[pos]= a[i];
      a[i]= aux;
      }
      }
      void mostrar(int n,int ARREGLO[' '])
      {
      for(i=0;i<n;i++)
      {
      cout<<ARREGLO[i]<<" ";
      }
      cout<<endl<<endl;
      getch();
      }… y este es el metodo de ordenacion

  36. DANIEL diciembre 31, 2009 en 5:44 pm

    me gusta mas C en vez de C++

  37. krizztian diciembre 3, 2009 en 7:54 pm

    kisiera que me pudieran ayudar necesito un codigo en c++ sencillo que sea un menu que contenga los metodos de burbuja, seleccion, insercion y quicksort por favor ayudenmeeeee ia me mate la acabeza aciendolo y no me salllleeeee

  38. km0t noviembre 25, 2009 en 3:54 pm

    gracias sAf0rAs!!!! excelentes codigos y q dcir de la ayuda mgnifik!!!

  39. km0t noviembre 25, 2009 en 1:58 pm

    podrias agregar mi cuenta de msn para que me ayudes al_kmot@hotmail.com porfavor

    • sAfOrAs noviembre 25, 2009 en 3:23 pm

      Hola km0t, bueno aclaro tu duda directamente asì los que lean este post ya no tengan k volver a preguntar…..
      En el còdigo hay una linea como la siguiente:

      for (k = 1; k < 5; k++)
      {
      /* Suponer que tenemos números de cuatro dígitos */

      el valor de k empieza en uno y es menor que 5 asì que el nùmero màximo de dìgitos que soporta es de 4, el problema en el ejemplo que mustras es que 3334556 tiene màs digitos de lo asignado, asì que tendrìas que cambiar k < 5 por k < 8 …, eso de acuerdo a cuantos digitos quieres que soporte tu codigo,

      Saludos!!!!!!

  40. km0t noviembre 25, 2009 en 1:55 pm

    gracias probe con esto

    Cadena de números enteros:
    555 5557 334556 -1

    pero arrojo esta salida
    555
    334556
    5557

    creo que no los ordeno bien

  41. km0t noviembre 25, 2009 en 1:16 pm

    Oye amigo puedes explikrme como utilizo el metodo radix lo ejecuto y me dice esto (((Cadena de números enteros:))) ahora como introdusco los datos, los separo x comas o como?? de antemano gracias

  42. km0t noviembre 25, 2009 en 1:07 pm

    Oye amigo puedes explikrme como utilizo el metodo radix lo ejecuto y me dice esto (((Cadena de números enteros:))) ahora como introdusco los datos, los separo x comas o como?? de antemano gracias!!!!!

    • sAfOrAs noviembre 25, 2009 en 1:19 pm

      intenta ingresando los numeros hasta que ingreses -1, el -1 termina de solicitar datos….,

  43. edi septiembre 5, 2009 en 6:10 pm

    hola…. necesito un programa que utilize metodos de ordenamiento con estructuras de por DIOS…. gracias ha y ejemplos…….!!!!

  44. Iver julio 6, 2009 en 2:46 pm

    hola.. bueno yo soy nuevo esto de hacer algoritmos en c++ y me pidieron hacer y demostrar unos algoritmos de ordenamiento en lenguaje c++ q solo lean 10 caracteres y los ordene en el metodo de shell, en el binario y en Quick Sort.
    porfavor una ayuda y guias simples para este principiante.
    mi correo es dark_ive@hotmail.com

  45. roxxa junio 10, 2009 en 12:30 pm

    oye saforas solo tengo problemas con el quicksort de hecho no me marca ningun error, de hecho lo compila y corre me pregunta cuantos elementos, los muestra pero no me los muestra ya ordenados se queda como bloqueado, me podrias dar una solucion

  46. roxxa junio 10, 2009 en 12:26 pm

    hola saforas tus respuestas me han sido muy utiles, ya que estoy estudiando metodos de ordenamiento en dev c++y como soy principiante en programacion pues me han servido muchos tus respuestas, gracias

  47. abraham junio 4, 2009 en 1:35 pm

    hola safora
    lo que pasa es q no se si me puedes ayudar a conseguir un program en c
    por el metodo de ordenamiento shell y q te haga un abusqueda secuencial

    espero un a respuesta satisfactoria

  48. Pedro mayo 29, 2009 en 1:44 pm

    hola; necesito d esu ayuda tengo k hacer un menu con archivo donde tenga agregar. mostrar, eliminar, buscar y modificar con array y ordenarlo con el metodo de insercion binaria; mi duda es k cuando busca m muestra en error el stricmp(bin.n,cadena); donde para mi el bin.n es entero y m dice k tengo k manejarlo en char; por favor ayudeme se o agredeseria y por cierto no m ordena el metodo de insercion binaria; estoy manejando el compilador dev-c++, t paso el codigo para k m ayudena; tanto para buscar cmo para ordenar thanks si m ayudan x favor…espero pronta respuesta
    ///////////// MÉTODO PARA BUSCAR EN EL ARCHIVO/////////////////////
    void Encontrar(void)
    {
    FILE *fp;
    Insercion bin;
    int p;
    char cadena[50];
    printf(“\n BUSCAR LOS DATOS EN LA LISTA\n\n”);
    printf(“Teclee el numero a buscar: “);
    gets(cadena);
    printf(“\n—- BUSCADO EL NUMERO —-\n”);
    fp=abrir_fichero_b(fichero,0);
    if(!(fp))//proceso que nos indica que el archivo no fue abierto
    printf(“\n Error el archivo agenda.dat no fue abierto\n”);
    else
    {
    while ((p=fread(&bin, sizeof(bin), 1, fp))!=0 && stricmp(bin.n,cadena)!=0);
    if (p==0)
    printf(“No existe ese numero: %s “,cadena);
    else
    {
    printf(“\n Numero encontrado con Exito!!!!!\n\n”);
    for (bin.numero=0; bin.numero<bin.n; bin.numero++)
    {
    printf(" Sus Numero son: %d\n",bin.arreglo[bin.numero]);// muestra los diferentes numeros
    }
    }
    }
    }
    /////////////////////////////////////////////////////////////////////
    la de insercion binaria es

    ////////MÉTODO INSERCIÓN BINARIA////////////////////////////////////
    void InsercionBinaria(void)
    {
    FILE *fp;//Se crea un fichero
    Insercion bin;//
    int n,i,j,aux,izq,der,m, lis;
    fp=abrir_fichero_b(fichero,3);//Se abre el fichero creado
    if(!(fp))//proceso que nos indica que el archivo no fue abierto
    printf("\n Error el archivo agenda.dat no fue abierto\n");
    else
    {
    printf("Que lista desee ordenar");
    scanf ("%d",&lis);
    if(lis)
    for(bin.numero=1;bin.numero<bin.n;bin.numero++)
    {
    aux = bin.arreglo[bin.numero];
    izq=0;
    der=bin.numero-1;
    while(izq<=der)
    {
    m=((izq+der)/2);
    if (aux=izq)
    {
    bin.arreglo[j+1]=bin.arreglo[j];
    j=j-1;
    }
    bin.arreglo[izq]=aux;
    fwrite(&bin,sizeof(bin), 1, fp);//Escribe en el archivo los datos
    fclose(fp);
    }
    }
    }

    mis estructuras son:
    #define NUM 50
    typedef struct //Crea una estructura en donde contendra los siguientes datos:
    {
    int numero; // Numero de la lista
    int arreglo[NUM];
    int n;
    }Insercion;

    ayude por favor
    thanks
    XD

  49. Ramon mayo 18, 2009 en 9:26 pm

    Oye saforas,pon tu correo para mandarte un programa en c++ que contiene tus programas de ordenamiento un poco modificados,en cuanto lo pongas y yo lo vea te los mando.Yo los use y me sirvieron mucho.Por eso quiero regresar el regalito.No siempre puedo acceder a internet por la cuestion monetaria,pero en cuanto lo haga te los mando,claro si esta tu correo.
    Hasta pronto.

    • sAfOrAs mayo 18, 2009 en 10:45 pm

      wow!!, thanks ramon, estoy completamente seguro de que podrá ser de gran ayuda para la gente interesada en el tema…

      dsaforasc arroba gmail punto com
      saludos!!!

  50. farm mayo 17, 2009 en 9:55 pm

    Genial, me has salvado de una dura, se te agradece bastante eres un verraco.

  51. yuki mayo 16, 2009 en 10:16 am

    gracias gracias gracias creo ke es la pagina donde me dicen las cosas de una manera que realmente entiendo muchas gracias por tus programas ^^

  52. Anónimo marzo 26, 2009 en 2:13 pm

    son una bola de pendejos ponganse a estudiar

  53. hola es urgente diciembre 14, 2008 en 3:43 pm

    hola tengo un problema con un codigo en c++ se supone q este codigo deberia de mostrarme en pantalla el arreglo debidamente ordenado de forma creciente pero no lo hace solo me dice: que presione cualquier tecla para continuar lo hago y sale del programa porq sera. el codigo es #include
    #define MAXC 7

    void main()
    {
    int array[MAXC]={6,1,5,2,3,4,0};
    int cont,pasos,temp,i;

    for (cont =MAXC/2;cont!=0;cont/=2)
    for (pasos=1;pasos!=0;)
    {
    pasos=0;
    for (i=cont; iarray [i])
    {
    temp =array [i];
    array [i]=array [i-cont];
    array [i-cont]=temp;
    pasos++;
    }
    }

    }

  54. sAfOrAs noviembre 30, 2008 en 12:37 am

    Hola jhon, gracias por dejar tu código, a la gente le será re-util….
    Si quieres puedes subscribirte a : http://groups.google.com.pe/group/somoscodigolibre
    y subir al repositorio los códigos que desees compartir!!

    Saludos y suerte!!!

  55. Diana noviembre 28, 2008 en 7:30 pm

    Gracias me fue de mucha utilidad
    me corrieron a la perfeccion

  56. jhon noviembre 28, 2008 en 12:27 pm

    //ojala les sirva jeje ta chevre la pagina sigan poniendo chicos cosa buenas
    #include
    #include
    #include

    struct alumno{
    char nombre[15];
    char apellidop[15];
    char apellidom[15];
    int codigo;

    }est[50];
    struct curso{ char nombrec[20];
    float nota1;
    float nota2;
    float nota3 ;
    float promedio;

    }curso[20];

    main(){
    int i,j,n,m;
    clrscr();
    gotoxy(30,5);cout<<” ESTRUCTURA ALUMNO”;
    gotoxy(30,6);cout<<” =================”;
    cout<<”\n———————————————————————–”;
    cout<>n;
    for(i=1;i<=n;i++){
    cout<<”\n——INGRESE DATOS DEL ESTUDIANTE—-:\t”<<i;
    cout<>est[i].nombre;
    cout<>est[i].apellidop;
    cout<>est[i].apellidom;
    cout<>est[i].codigo;}
    cout<<”\n————————————————————————”;
    cout<>m;

    for(j=1;j<=m;j++){
    cout<<”\n—- INGRESE EL NUMERO DE CURSOS:—–”<<j;
    cout<>curso[j].nombrec;
    cout<>curso[j].nota1;
    cout<>curso[j].nota2;
    cout<>curso[j].nota3;
    curso[j].promedio=(curso[j].nota1+curso[j].nota2+curso[j].nota3)/3;

    }
    cout<<”\n\n————————————————————————-”;
    for(i=1;i<=n;i++){
    cout<<setw(12)<<”\nNOMBRE:”<<est[i].nombre;
    cout<<setw(12)<<”\nAPELLIDO PATERNO:”<<est[i].apellidop;
    cout<<setw(12)<<”\nAPELLIDO MATERNO:”<<est[i].apellidom;
    cout<<setw(12)<<”\nCODIGO:”<<est[i].codigo;
    cout<<”\n\n————————————————————————–”;

    }

    cout<<”\n\n————————————————————————-”;
    for(j=1;j<=n;j++){
    cout<<setw(12)<<”\nNOMBRE DEL CURSO:”<<curso[j].nombrec<<endl;
    cout<<setw(12)<<”\nNOTA PROMEDIO DEL CURSO:”<<curso[j].promedio<<endl;

    }
    cout<<”\n\n———Gracias por Utilizar mi Programa————————————”;

    getch();
    return 0;
    }

    • Anónimo octubre 16, 2009 en 11:18 pm

      lcyagjhik u

  57. ANDREA noviembre 27, 2008 en 2:51 pm

    OYE QUE BUEN SITIO, DE VERDAD TE FELICITO.
    EXCELENTE TRABAJO

  58. carlos noviembre 24, 2008 en 1:00 pm

    programaciòn de doris

  59. ephemeral noviembre 16, 2008 en 2:16 pm

    Gracias por los algoritmos, funcionan muy bien!!

  60. sAfOrAs noviembre 6, 2008 en 3:12 pm

    hola juan, no creo que el código de shell no te funcione, todos son correctamente probados antes de subirlo a la red.

    Y ya he agregado el ordenamiento por radix, espero que te sirva. La petición de números de radix acaba cuando ingresas -1
    saludos!!

  61. juan mendez noviembre 6, 2008 en 12:59 pm

    aljien podria mandarme el codigo de radix en c++ pero que funsione por que este codijo de sell sort no funsiona grasias

  62. sAfOrAs octubre 18, 2008 en 9:59 pm

    Es posible que te dé error en #include”leearreglo.h” si no incluiste ese archivo en el mismo directorio o proyecto del código que lo llama, creo que ya le expliqué a alguien antes!!!

    Esta es la librería que los 6 codigos anteriores lo utilizan: leearreglo.h

  63. rosmy octubre 18, 2008 en 4:26 pm

    Hola como estas ,quiero saber porque en los metodos de ordenamiento me sale error en #include “leearreglo.h” y using namespace std.
    gracias respondeme rapido.

  64. SM septiembre 22, 2008 en 8:25 pm

    HI!! como esta hasta ahora q entro a sta pagina y sta muy interesante, bueno fijate que stoy llevando un curso de c++ y me esta costando un poco con el tema de ordenamientos sera q me puedes mostrar algunos ejemplos para poder comprenderlos mejor, de antemano gracias por tu respuesta

  65. pochunguito septiembre 9, 2008 en 10:06 pm

    hola amigo, gracias por preocuparte y dar un poco de tu tiempo en prestar tu ayuda en contestar algunas dudas acerca de la programacion, quiero aprender a programar aunque conozco lo basico y se que voy a aprender, gracias por tus respuestas… suerte

  66. alex_xela septiembre 4, 2008 en 10:15 pm

    buenas pues yo tambien felicito a saforas por muy buen foro de verdad que esto hace falta para mucho mas temas yo tambien estoy con el tema de leonidas sobre en donde se puede utilizar los metodos de ordenamiento y la diferencia de utilizar uno y otro muchas gracias y sigue adelante

  67. leonidas agosto 3, 2008 en 4:33 pm

    si de todas formas… muchas gracias… saludos!

  68. sAfOrAs agosto 3, 2008 en 12:13 am

    muy buena pregunta leonidas…
    verás, la utilización de los diversos métodos de ordenamiento en el lenguaje que sea, se hace dependiendo de su uso, por ejemplo, hay métodos que funcionan mejor en ciertos casos y que son un drama en otros.
    En cuanto a su aplicación, en el mundo de la web es muy importante como en cualquier aplicación que se vincula con cierta base de datos, por ejemplo, google u otros buscadores se encargan de ordenar sus resultados teniendo en cuenta la importancia de la web, en relación con su número de vínculos entrantes, salientes,etc;es decir, cuantifica su relevancia.

    Los pagerank’s también tienen que usar métodos de ordenamientos para listar ordenadamente las webs con más valoración desde diversas perspectivas.

    En el caso de los web/blogs, hay quienes mustran las entradas más vistas, como en éste, lo hacen ordenadamente según el resultado del análisis de la cantidad de visitas que tiene cada post.

    Por lo tanto, es común que usemos métodos de ordenamiento como una herramienta más de los métodos de búsqueda.

    Casi todas las webs cuentan con un motor de base de datos, por el cual es necesario contar con métodos de búsquedas para localizar información y métodos de ordenamiento para mostrarlos.

    Espero haberte dado algo de luces en este aspecto, te invito a buscar mas info en la web que este tema es sumamente importante.
    Saludos.

  69. leonidas agosto 2, 2008 en 11:04 pm

    wenas!! me parece muy wena tu iniciativa de este blog, tipo foro que ayudas a los demas a comprender mejor la algoritmia... ahora mas alla de problemas con las metodologias de ordenamiento, quisiera saber que aplicacion tendria un ordenamiento en lenguajes orientados a la web, como paginas o algun tema relacionado a eso... agradeceria tu respuesta y conocer algo mas acerca de la implementacion de estos...

  70. sAfOrAs julio 29, 2008 en 4:34 pm

    hey, que tal Ronald, felicitaciones por la buena nota, regresa pronto!!!

  71. Ronald Mieles julio 29, 2008 en 3:37 pm

    Muchas gracias Yovana y a quien te ayudo que no se como se llama, me sirvio de mucho todo lo que pusieron ya que como lo especifican lo pude ejecutar, he aprendido con usted mucho y saque una buena nota en un exposion de este tema.

    Saludos

    Ronald

  72. sAfOrAs junio 30, 2008 en 3:33 am

    O_O, Hola Penelope, la verdad que no he notado error en el método, podrías decirme cuales son los datos que ingresas?
    Ten en cuenta que el primer valor ingresado es la cantidad de numeros que ingresarás, luego de eso tienes que ingresar los n numeros que pusiste en un inicio.

    puedes sustituir estas lineas :

    for(i=1;i<=n;i++)
    cin >> A[i];

    por estas:

    for(i=1;i<=n;i++)
    {
    cout<<”Ingrese el elemento “<<i<<” : “;
    cin >> A[i];
    }

    para hacer más comprensible el proceso.
    saludos…

  73. Penelope junio 28, 2008 en 8:31 pm

    El HeapSort No ordena correctamente, cual es la solucion

  74. sAfOrAs junio 18, 2008 en 12:03 pm

    vale Chany, entonces esto te podría ayudar a comprender, aunque el código es prácticamente lo mismo.

    Ordenamiento en C++

    solo incluyo la explicación del algoritmo de cada método.
    saludos…

  75. Soy Chany junio 17, 2008 en 9:52 pm

    yo sòlo necesito hacer un ejercicio de cada ordenamiento: shell, arbol, burbuja y quick sort, la verdad, es que no entiendo mucho. Cual es LA PÁGINA MÁS FACIL DE ENTENDER???, GRACIAS.

  76. ozzy junio 14, 2008 en 2:29 pm

    hola alguien que me ayude, nesecito un compilador que haga lo mas basico como reconocer unas cuantas sentencias, hecho en c++, urge muchisimo

  77. Pingback:Métodos de ordenamiento hecho en java « Saforas’$ the::beastieux

    • sda junio 23, 2009 en 7:01 pm

      saaaaaaaaaaaaaaaaaaaaa

  78. sAfOrAs junio 12, 2008 en 12:14 am

    Buena observación!!!
    Lo cierto es que no he usado en muchas ocasiones Dev C++, pero seguro te sucede lo que me sucedió cuando use esta IDE por primera vez.
    Lo que pasa es que Dev-C++ no soporta la dichosa generación automática de pausas, por lo que cuando ejecutas el programa, te pide que ingreses los datos, pero no puedes ver los resultados porque la ventana se cierra inmediatamente.

    para que soluciones este problema basta con hacer lo siguiente:

    int main ( )
    {
    .
    .
    .

    system(“pause”); //código que debes aumentar
    return 0;
    }

    con ese system(“pause”); antes del return 0 seguro que no tendrán problemas en ningún código!!!
    Era eso lo que te sucedía??? bye!!

  79. yovana junio 11, 2008 en 4:48 pm

    hola sabes ya me corrio el programa pero se supone que tiene q ordenarlo y mostrarlo pero no muestra nada

  80. sAfOrAs junio 10, 2008 en 1:55 pm

    como vas yovana, ….
    dev-C++, ese solo es una IDE, que ayuda a programar y compilar en C++, pero el lenguaje es solo “c++”:) bueno, el código que mencionas, el shell, lo compilé con g++, no he tenido ningún problema, pero ahora que lo dices lo he hecho con dev-C++, .
    Lo primero que hice es crear un nuevo source desde el menu archivo(file):

    file – new – source file

    ahí copie el código shell.
    al momento de compilar te pedirá que le pongas un nombre, si antes ya no lo habías hecho, puedes ponerlo por ejemplo shell.cpp, el nombre puede ser cualquiera, pero siempre al final un .cpp
    -compilé, y efectivamente sale el error que tu mencionas.
    ese error es porque muestraCadena y leeCadena están incluidos en la librería leearreglo.h, al cual invocamos en el comienzo del código, pero no lo encuentra, ya que no lo puse en el mismo proyecto.

    Por lo tanto ahora hacemos otra vez file – new – source file
    copiamos el còdigo de leearreglo.h
    lo compilamos, y cuando nos pide un nombre, lo ponemos exactamente como este: leearreglo.h esto es muy importante, ya que es el nombre que invocamos en el código, el .h indica que es solo una librería, o sea no se le podrá ejecutar solo, ya que no tiene un main() en su código.

    Ahora compilamos, y todavía habrá un error más, lo que pasa es que cuando yo compile con g++ no me votó ese error, o no lo consideró como error.
    pero en dev-C++ debemos cambiar el tipo de dato de retorno void del ‘main()’ con un int, y darle un valor de retorno de 0.

    int main ( )
    {

    .
    .
    .

    return 0;
    }

    el main debe quedar como ese.
    ahora sí, volvemos a compilar y todo ok!
    es seguro que en los demás códigos también se encuentre ese problema, pues dev-C++, no acepta en el main un valor void, o eso es lo que parece!!!
    saludos….

  81. yovana junio 10, 2008 en 12:59 pm

    hola una pregunta mira yo estoy utilizando la sodificación de ordenamiento shell y me sale dos errores una es en esta :
    leeCadena(n,A);
    y la otra en esta:
    muestraCadena(n,A);
    estoy utilizando el lenguaje dev-C++
    espero tu respuesta………………….

  82. sAfOrAs junio 9, 2008 en 3:52 pm

    va a dar error si no incluyes la la libreria leearreglo.h, y el using namespace std; se usa para poder utilizar el cin>> el cout<< y el endl; en el código.

  83. made junio 9, 2008 en 2:37 pm

    no entendi nada xD
    kuak!

  84. Hector junio 4, 2008 en 7:42 pm

    es un ordenamiento este es el codigo :

    //Quick Sort
    #include
    #define largo 100
    #include”leearreglo.h”
    using namespace std;
    void quicksort(int A[],int izq, int der )
    {
    int i, j, x , aux;
    i = izq;
    j = der;
    x = A[ (izq + der) /2 ];
    do{
    while( (A[i] < x) && (j <= der) )
    {
    i++;
    }

    while( (x izq) )
    {
    j–;
    }

    if( i <= j )
    {
    aux = A[i]; A[i] = A[j]; A[j] = aux;
    i++; j–;
    }

    }while( i <= j );

    if( izq < j )
    quicksort( A, izq, j );
    if( i < der )
    quicksort( A, i, der );
    }

    void main ()
    {
    int A[largo],n;
    do{
    cout<>n;
    if(nlargo)
    cout< a 0 y < a “<<largo<<endl;
    }while(nlargo);
    leeCadena(n,A);
    quicksort(A,0,n-1);
    muestraCadena(n,A);

    }

  85. Hector junio 4, 2008 en 7:20 pm

    para que sirve el using namespace std es que cuando lo compilo en el borland 5.01 me dice que hay error ahi.

  86. n junio 4, 2008 en 4:23 pm

    bobo

  87. sAfOrAs mayo 20, 2008 en 10:31 pm

    ok alexandro, el #include “leearreglo.h”, es una libreria que es invocada desde los programas realizados, más específicamente, son llamados desde todas las funciones de ordenamiento que hice, excepto desde heap sort. Presenta solo 2 procedimientos:
    void leeCadena(int cant,int n[]) //pide el ingreso de numeros, dependiendo de la cantidad (int cant) mandada, y se almacena en el arreglo n[]

    void muestraCadena(int cant,int n[]) // muestra todos los elementos del arreglo.

    Si no incluyes esta libreria que adjunté al final de los 6 codigos de ordenamiento, los programas no correrán, exceptuando el heap sort que no necesita de esta libreria, pues debes tenerlo en el mismo proyecto si trabajas con algún IDE, o en la misma carpeta si compilas y ejecutas directamente.
    saludos!!

  88. alexandro mayo 20, 2008 en 9:29 pm

    epa man solo tengo una preguna que para que es esta sentencia #include”leearreglo.h”

  89. sAfOrAs abril 9, 2008 en 10:09 pm

    como estás …
    primeramente, no se con k compilador estás usando, en linux yo use g++
    para compilar solo debes copiar el archivo a algun editor y guardarlo con extensión cpp.
    luego compilar con:
    $ g++ nombre_del_archivo.cpp -o nombre_del_archivo
    para ejecutar:

    $ ./nombre_del_archivo

    suerte :)

  90. roberto abril 9, 2008 en 5:27 pm

    no m korre ningun programa k puedo hacer

    • Anónimo julio 1, 2011 en 11:36 am

      oye ermano por q no haces en codigo c++ un metodo de shell

No te quedes callado. Pregunta, Comenta, Comparte, Sígueme, Suscríbete, Déjame tu opinión... Soy Beastieux Zeroo...

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 548 seguidores

A %d blogueros les gusta esto: