Pages

viernes, 25 de enero de 2013

Ordenar creciente o decreciente una lista de N números Codigo Fuente en C

Problema
Hacer un programa o algoritmo.
Se desea realizar un algoritmo que realice las siguientes tareas:
  • Leer una lista de números enteros
  • Visualizar dichos números
  • El algoritmo deberá pedir si yo deseo ordenar en sentido decreciente o creciente (burbuja)
Solución
  • Entrada: 10, 15, 20, 8
  • Salida: decreciente 20 15 10 8
Codigo Fuente en C
#include <stdio.h>
int main(){
     int cont=0,w=0,i,s,k,tem,c,num;
     printf("ingresa longitud del arreglo\n");
       scanf("%d",&c);
       int N[c];
       while(cont!=c){
       printf("Ingresa numero\n");
       scanf("%d",&num);
       N[cont]=num;
       cont++;
       }
       for(i=0;i<c;i++){
       printf("%d ",N[i]);
       }
       printf("\nSeleccione: \n");
       printf("(1) Orden Decreciente\n");
       printf("(2) Orden Creciente\n");
       scanf("%d",&s);
       if(s==1){
       while(w!=(c-1)){
  w=0;
  for (k=0;k<(c-1);k++){
   if(N[k]>=N[k+1]){
    w=w+1;
                       }else{
                    tem=N[k];
                    N[k]=N[k+1];
                    N[k+1]=tem;
                 }
               }
          }
       for(i=0;i<c;i++){
       printf("%d ",N[i]);
       }
       }else{
       while(w!=(c-1)){
  w=0;
  for (k=0;k<(c-1);k++){
   if(N[k]<=N[k+1]){
    w=w+1;
                       }else{
                    tem=N[k];
                    N[k]=N[k+1];
                    N[k+1]=tem;
                 }
               }
          }
       for(i=0;i<c;i++){
       printf("%d ",N[i]);
       }
       }
      return 0;
}

4 comentarios:

Cirilo Gaspar Nfube dijo...

Es un programa con una claridad y desarrollo admirables, pero cabe subrayar que se podemos ahorrarnos los "else" en las condiciones de ordenamiento y utilizar solo los if para cada caso. Cambiando los <= por >= y viceversa en las dos condiciones.
Un saludo!

Anónimo dijo...

Hola, muchas gracias, me has salvado, no podía realizar lo. Espero que estes bien y saludos.

Anónimo dijo...

este código me sirvió de mucho .. te descordera por la ayuda brindada

Anónimo dijo...

Creo que es muy deficiente, se podría hacer todo eso con menos variables y ocupando recursividad pero igual gracias por la claridad del código.

Publicar un comentario