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>
#include<stdio.h>
using namespace std;
int main(int argc, char *argv[]){
int enteros[] = {10,9,7,4,2,6,3,5,8,1} ;
int aux, c;
for(c = 0; c < 10 ; c++){
if(enteros[c] > enteros[c+1]){
aux = enteros[c];
enteros[c] = enteros[c+1];
enteros[c+1] = aux;
c = 0;
}
}
for(int i = 0; i < 10; i++){
printf("%d\n",enteros[i]);
}
return 0;
}
Mod: Los códigos deben ir en etiquetas GeSHi
los errores de tu algoritmo...
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
enteros[9] > enteros[9+1]
causando una violación de memoria...
segundo... en linea 13
Citarc = 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
{10,9,7,4,2,6,3,5,8,1}
quedaría
{10,9,7,4,6,3,5,8,2,1}
solo habría flotado el 2... tienes que hacer doble ciclo
for(...
for(..
: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