Professional Documents
Culture Documents
Baseia-se num princpio muito simples que, quando aplicado recursivamente, acaba por ordenar o vector. Este princpio composto por 2 passos essenciais: 1. Escolher um elemento do vector, o pivot (por ex., V[0]); 2. Dividir o vector em 2 partes (esquerda e direita), em que: Parte esquerda com os elementos menores do que o pivot; Parte direita com os elementos maiores do que o pivot. Ao ser aplicado succesivamente este princpio a ambas as partes, quando o processo recursivo terminar o vector est ordenado. int v[]={ 7, 12, 1, -2, 0, 15, 4, 11, 9, 3}; int determinapivo(int inicio,int fim) { int i=0 ,k=inicio; for(i=inicio+1;i<=fim;i++) if(v[i]<v[inicio]) { k++; troca(&v[i],&v[k]); } troca(&v[inicio],&v[k]); printf("\n devolve pivo=%d",v[k]); return k; } int main() { int p=determinapivo(0,9); printf(\n pivo=%d,p); }
1 -2 0 2 3 4 ) ou no houve troca( 1 -2 0 2 3 4
15 4 5 6 x ) k=__0____ 15 4 5 6
11 7 11 7
9 8 9 8
3 9 3 9
11 7
9 8
3 9