Leer un Vector A de N elementos, ordenar de menor a mayor por el método del quicksort
#include <stdio.h>
#define MAX 100
int a[MAX];
void leer_vector( int a[],int n){
int i;
printf("Ingrese los valores...\n");
for(i=1;i<=n;i++)
{ printf("A[%d]= ",i);
scanf("%d",&a[i]);
}
a[0]=n;
}
void mostrar_vector( int a[] ){
int i,n=a[0];
for(i=1;i<=n;i++)
printf(" - %d ",a[i]);
}
void quicksort_vector(int A[],int izq, int der ){
int i, j, x , aux;
i = izq;
j = der;
x = A[ (izq + der) /2 ];
do{
while( (A[i] < x) && (j <= der) ){
i++;
}
while( (x < A[j]) && (j > izq) ){
j--;
}
if( i <= j ){
aux = A[i];
A[i] = A[j];
A[j] = aux;
i++;
j--;
}
}while( i <= j );
if( izq < j )
quicksort_vector( A, izq, j );
if( i < der )
quicksort_vector( A, i, der );
}
int main() {
int n;
printf("\nORDENAR UN VECTOR METODO QUICKSORT\n");
do {
printf("Ingrese cantidad de elementos menor a 100: ");
scanf("%d",&n);
} while( (n<0)||(n>MAX) );
leer_vector(a,n);
printf("\nVector original: \n");
mostrar_vector(a);
quicksort_vector(a,1,n);
printf("\nvector ordenado: \n");
mostrar_vector(a);
printf("\n");
return 0;
}
Comentarios