
// [10/12/2004]
// MAC100 - Turma 42
// 
// Ordenação via "Seleção Direta"

// #include <stdio.h>

#define M 10
#define MOD 100  // para geração de números "pseudo" aleatórios

void geraVet (int v[], int n) {
  int i;
  for (i=0; i<n; i++)
    v[i] = rand() % MOD; // número "pseudo" aleatório entre 0 e MOD-1
  }

// ordenação pelo método da "seleção direta"
void ordena (int v[], int n) {
  int i,j, aux;
  for (i=0; i<n-1; i++) // pega o i-ésimo menor 
    for (j=i+1; j<n; j++)  // compara o i-ésimo com i+1, i+2, ..., n-1
      if (v[i] > v[j]) {   // se elemento em i maior, troque-os
         aux  = v[i];
         v[i] = v[j];
         v[j] = aux;
         }
  // Observação:
  // lembre-se que vetor com parâmetro é sempre "passagem por referência" (ou "apontador")
  }

int main (void) {
  int vet[M];   // vetor com as informações
  int n = M, i; //
  printf("\nExemplo: ordena via método Seleção Direta\n");

  geraVet(vet, n);

  // lista vetor gerado
  printf("Vetor gerado:\n");
  for (i=0; i<n; i++)
     printf("%2d: %d\n", i, vet[i]);

  ordena(vet, n);

  // lista vetor ordenado
  printf("\nVetor ordenado:\n");
  for (i=0; i<n; i++)
     printf("%2d: %d\n", i, vet[i]);
  }
