/*  ORDEDIR.C--Exemplo de Ordenacao por Selecao Direta
 *  Problema: dada uma sequencia de N numeros reais (tipo float)
 *  ordena'-la em ordem crescente. */
#include <stdio.h>
#define Nmax 100           /* Numero maximo de elementos em R[] */
int main(){
   int  N,   /* numero de elementos em R[] */
        i, j,
        IndMin; /* indice do minimo temporario */
   float R[Nmax],  /* vetor de N elementos */
         temp;     /* variavel temporaria */
   /*
    *  Leitura dos parametros
    */
   printf("\nDigitar o numero de elementos de R[] -> ");
   scanf("%d", &N);
   printf("\nN = %d\n", N);
   if(N>Nmax){
     printf("\nNumero maximo de elementos foi excedido\n");
     exit(0);
     } /*end if */
   printf("Digitar os elementos de R[] a serem ordenados -> ");
   for(i=0; i<N; i=i+1)
     scanf("%f", &R[i]);
   printf("\n");
   for(i=0; i<N; i=i+1){
     printf("R[%d] = %f", i, R[i]);
     } /* end for i */
/* Ordenacao dos elementos em R[], em tempo proporcional a N*N */
    for(i=0; i<N; i=i+1){
     IndMin = i;         /* indice do Minimo temporario */  
     for(j=i+1; j<N; j=j+1){
       if(R[IndMin] > R[j])
         IndMin = j;
       } /* end for j */
     temp = R[IndMin];
     R[IndMin] = R[i];
     R[i] = temp; 
     } /* end for i */ 
   /*
    *  Dar resposta final
    */
   printf("\n Elementos de R[], em ordem crescente:\n");
   for(i=0; i<N; i=i+1){
     printf(" R[%d]=%f ", i, R[i]);
     } /* end for i */
} /* end main */