sei do metodo quick sort... veja ! so que usa recursividade..roda ele ae ..acho que você vai entender ! #include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
void parte(int arquivo[],int inicio,int fim, int *j);
void quicksort(int arquivo[],int inicio,int fim);
void main(){
int arquivo[MAX],i,inicio,fim,j;
clrscr();
for (i=0;i<MAX;i++){
arquivo[i]=rand ()%10000;
}
inicio=0;
fim=MAX;
for (i=0;i<MAX;i++){
printf("Vetor [%d]=%d\n ",i+1,arquivo[i]);
}
quicksort(arquivo,inicio,fim);
printf("VETOR ORDENADO \n\n\n\n\n");
for (i=0;i<MAX;i++){
printf("Vetor [%d]=%d\n ",i+1,arquivo[i]);
}
getch();
}
void parte(int arquivo[],int inicio,int fim,int *j){
int a , down, up, temp;
a=arquivo[inicio];
up=fim;
down=inicio;
while (down<up){
while(arquivo[down]<=a && down<fim){
down++;
}
while (arquivo[up]>a){
up --;
}
if (down<up){
temp=arquivo[down];
arquivo[down]=arquivo[up];
arquivo[up]=temp;
}
}
arquivo[inicio]=arquivo[up];
arquivo[up]=a;
*j=up;
}
void quicksort(int arquivo[],int inicio,int fim){
int j;
if(inicio>=fim){
return;
}
parte(arquivo,inicio,fim,&j);
quicksort(arquivo,inicio,j-1);
quicksort(arquivo,j+1,fim);
}