Problema con Ordenamiento Burbuja en Array
Publicado por Yulz (1 intervención) el 03/04/2014 08:44:56
Hola tengo un problema con un programa que me dejaron como proyecto. Miren en sí el programa es un Menú donde el Usuario elegirá el tamaño del Arreglo y después comenzará a ingresar los valores del mismo, etc.
Mi problema esta en la parte donde tengo que ordenar los elementos del Arreglo, verán cuando el Usuario termina de llenar el Arreglo se ordena sin problemas sin embargo si el Arreglo aún no está lleno es donde me aparece el problema.
Por ejemplo:
Supongamos que el Arreglo que quiere el Usuario es de 5 elementos.
Y el decide ingresar 1 por 1 los primeros 3 elementos:
4 3 2
Entonces selecciona la opción para ordenar el arreglo y quedaría algo así:
2 3 4
Pero entonces ingresa otro elemento para el Arreglo, digamos el número 1 y muestra lo siguiente:
2 3 4 1
Entonces al momento de que el Usuario vuelve a seleccionar la opción para ordenar le queda esto:
2 3 1 4
Y yo lo que quiero que quede es esto:
1 2 3 4
¿Si me explico correctamente?
Este es mi código:
Quiero aclarar que estoy usando un Switch para el Menú. Ojalá me puedan ayudar, estoy desesperado.
Mi problema esta en la parte donde tengo que ordenar los elementos del Arreglo, verán cuando el Usuario termina de llenar el Arreglo se ordena sin problemas sin embargo si el Arreglo aún no está lleno es donde me aparece el problema.
Por ejemplo:
Supongamos que el Arreglo que quiere el Usuario es de 5 elementos.
Y el decide ingresar 1 por 1 los primeros 3 elementos:
4 3 2
Entonces selecciona la opción para ordenar el arreglo y quedaría algo así:
2 3 4
Pero entonces ingresa otro elemento para el Arreglo, digamos el número 1 y muestra lo siguiente:
2 3 4 1
Entonces al momento de que el Usuario vuelve a seleccionar la opción para ordenar le queda esto:
2 3 1 4
Y yo lo que quiero que quede es esto:
1 2 3 4
¿Si me explico correctamente?
Este es mi código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
case "C":
while(flag == false)
{
flag = true;
if(indice < n)
{
for(int ctrl = 0; ctrl < indice-1 && ctrl < n-1; ctrl++)
{
if(original[ctrl] > original[ctrl+1])
{
help = original[ctrl];
original[ctrl] = original[ctrl+1];
original[ctrl+1] = help;
flag = false;
}
}
break;
}
else if(indice == n)
{
for(int ctrl = 0; ctrl < n-1; ctrl++)
{
if(original[ctrl] > original[ctrl+1])
{
help = original[ctrl];
original[ctrl] = original[ctrl+1];
original[ctrl+1] = help;
flag = false;
}
}
}
}
Quiero aclarar que estoy usando un Switch para el Menú. Ojalá me puedan ayudar, estoy desesperado.
Valora esta pregunta


0