for (j=max;j>0;j--) {
for (i=0;i
if (vector[i] < vector[i+1]) {
temp = vector[i];
vector[i] = vector[i+1];
vector[i+1] = temp;
}
}
}
Creo que no me he equivocado. Se llama el "método de la burbuja" y consiste en ir comparando pares consecutivos para ir "arrastrando" el valor mínimo a un extremo, colocando uno a uno haciendo una "montaña" ordenada en ese extremo.
En cada iteración de j se coloca el menor valor al extremo del vector. En la siguiente iteración, se excluye dicho valor del análisis y se considera el vector como si se hubiera quitado esa posición en la que hemos colocado el anterior valor.
max = Máxima posición del vector
j = contador que controla hasta dónde hay que llegar arrastrando en cada pasada del bucle principal (cada vez se va reduciendo porque más adelante de ese límite ya quedan ordenados).
i = contador que va controlando el paso del "valor burbuja" que se está desplazando.
temp = variable temporal para hacer el cambio.
2006-12-01 09:04:11
·
answer #1
·
answered by David Rguez 6
·
1⤊
1⤋
El siguiente es el método de "Uno contra el resto" en C, pero en versión "descendente":
void Ordenar (int * Vector, int Max)
{
int i, j, Temp;
for (i = 0; i < Max - 1; i++)
for (j = i + 1; j < Max; j++)
if (Vector [i] < Vector [j]){ /* Aquí cambia el sentido */
Temp = Vector [i];
Vector [i] = Vector [j];
Vector [j] = Temp;
}
}
Te recomiendo que te comprés los siguientes libros:
1. Kernigan & Ritchie: El Lenguaje de Programación C
2. Bjarne Stroustrup: El Lenguaje de Programación C++
Estos son los libros escritos por los respectivos autores de cada lenguaje. El de K&R contiene excelentes programas de ejemplo, y el de Stroustrup contiene absolutamente toda la descripción del lenguaje con mecanismos avanzados.
Cordiales saludos.
2006-12-01 15:54:44
·
answer #2
·
answered by Sir John 6
·
1⤊
0⤋
A ver amigo , aquí no estamos para hacerte l. a. tarea ... no pidas que te lo hagan (Porque es lo que as pedido) . Si tan solo hubieras pedido pistas o ayudas , pero bueno no pienso hacerte l. a. tarea Un Saludo C/C++ Geek xD
2016-12-18 06:02:14
·
answer #3
·
answered by ? 3
·
0⤊
0⤋
Hola la verdad, es que no me acuerdo mucho de la sintaxis de C, pero lo importante es la lógica, como tu lo estas aprendiendo supongo que podrás adaptarlo, no??
Ahora, hablas de que hiciste una serie, yo estoy suponiendo que los números de la seríe los subiste a un arreglo, en caso de que no, te sugiero que los metas en un vector, para efecto de ordenamiento, vale???
define TAM = 100; /*por ejemplo o del tamaño que lo requieras*/
void ordenaasc()
{
int temp; /*variable auxiliar del tipo de los datos*/
for (i=1; i
for j=0 ; j
if (lista[j] > lista[j+1])
temp = lista[j];
lista[j] = lista[j+1];
lista[j+1] = temp;
}
Espero te ayude, o haya entendido que es lo que necesitabas.
Mucha Suerte!!!!
*/
2006-12-01 09:28:14
·
answer #4
·
answered by Anonymous
·
0⤊
1⤋
dfsgesgef
2006-12-05 08:53:01
·
answer #5
·
answered by juanpaisaza 1
·
0⤊
6⤋
que??????????????????????
2006-12-01 09:20:05
·
answer #6
·
answered by zuly 1
·
0⤊
6⤋
no comprendo lo que decis..............
2006-12-01 09:01:17
·
answer #7
·
answered by Anonymous
·
0⤊
6⤋