Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: 0and6 en 1 Agosto 2015, 03:51 am



Título: Ayuda algoritmo de ordenacion
Publicado por: 0and6 en 1 Agosto 2015, 03:51 am
Ola tengo un problema, es que estoy haciendo un algoritmo para ordenar un arreglo, lo estoy haciendo de la siguiente manera se que existen maneras mas rapidas, pero apenas comienzo y quiero hacerlo por mi cuenta, asi que se hizo el siguiente algoritmo el problema es que no ordena el primer numero, asi que si tienen una solucion para este algoritmo les agradeceria


#include<iostream>
Código
  1. #include<stdio.h>
  2. using namespace std;
  3.  
  4. int main(int argc, char *argv[]){
  5.    int enteros[] = {10,9,7,4,2,6,3,5,8,1} ;
  6.    int aux, c;
  7.  
  8.    for(c = 0; c < 10 ; c++){
  9.        if(enteros[c] > enteros[c+1]){
  10.            aux = enteros[c];
  11.            enteros[c] = enteros[c+1];
  12.            enteros[c+1] = aux;
  13.            c = 0;
  14.        }
  15.    }
  16.  
  17.    for(int i = 0; i < 10; i++){
  18.        printf("%d\n",enteros[i]);
  19.    }
  20.    return 0;
  21. }

Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Ayuda algoritmo de ordenacion
Publicado por: engel lex en 1 Agosto 2015, 04:05 am
los errores de tu algoritmo...

Código:
for(c = 0; c < 10 ; c++){
        if(enteros[c] > enteros[c+1]){

tu algoritmo tiene 10 elementos (del 0 al 9) si c = 9; entonces se traducirá en

Código:
enteros[9] > enteros[9+1]

causando una violación de memoria...

segundo... en linea 13
Citar
c = 0;

tu algoritmo hará un ciclo infinito

tercero... el algoritmo que intentas hacer se llama "ordenamiento de (o por) burbuja"
el asunto es que un solo ciclo no basta...
despues de comparar tu arreglo
Código:
{10,9,7,4,2,6,3,5,8,1}
quedaría
Código:
{10,9,7,4,6,3,5,8,2,1}

solo habría flotado el 2... tienes que hacer doble ciclo
Código:
for(...
  for(..


Título: Re: Ayuda algoritmo de ordenacion
Publicado por: 0and6 en 1 Agosto 2015, 07:27 am
 :D oye la neta pues gracias ya he bucado ese algoritmo y la neta esta chido he podido solucionar mi problema  gracias  ;-) ;-) ;-)

ah y por editar el codigo es que no sabia que era con esas etiquetas