Mostrando entradas con la etiqueta Quikshort. Mostrar todas las entradas
Mostrando entradas con la etiqueta Quikshort. Mostrar todas las entradas

jueves, 29 de octubre de 2009

Metodos de Ordenacion en C

//Programa en C (Metodos de Ordenacion)

#include
#include
#include
# define N 10

void tamano(int* a);
void llenar(int m[],int a);
void presentar(int m[],int a);
void burbuja(int m[], int a);
void shell(int m[N], int a);
void QuikShort(int m[], int izq, int der);
void insercionbinaria(int m[], int a);

int main() {
int m[N];
int a, t=0,izq=1;
srand(time(NULL));
tamano(&a);
llenar(m,a);
presentar(m,a);

printf("Ingrese el metodo de ordenacion por: \n 1. Burbuja \n 2. Shell \n 3. Quick Short \n 4. Insercion Binaria \n");
scanf("%d",&t);


if (t==1){
printf(" Vector Ordenado por metodo Burbuja: \n");
burbuja(m,a);
presentar(m,a);
}

if (t==2){
printf(" Vector Ordenado por Shell: \n");
shell(m,a);
presentar(m,a);
}

if (t==3){
printf(" Vector Ordenado por Quick Short: \n");
QuikShort(m,izq,a);
presentar(m,a);
}

if (t==4){

printf(" Vector Ordenado por Insercion Binaria: \n");
insercionbinaria(m,a);
presentar(m,a);
}
if (t<1|| t>4){
printf("Seleccione correctamente el metodo de ordenacion \n");
}
}


void tamano(int* a){
printf("Ingrese la longitud del vector: ");
scanf("%d",a);

}

void llenar(int m[],int a){
int i;
for(i=1; i<=a;i++){
m[i]=rand()%10;
}
}

void presentar(int m[],int a){
int i;
for(i=1; i<=a;i++){
printf("%3d",m[i]);
printf("\n");

}
}

//Metodos de Ordenacion

void burbuja(int m[], int a){
int i,j;
int aux;
for(i=1; i<=a-1; i++){
for(j=1; j<=a-1; j++){
if(m[j]>m[j+1]){
aux=m[j];
m[j]=m[j+1];
m[j+1]=aux;
}
}
}
}


void shell(int m[N], int a){
int salto, k, j, ord;
int aux;
salto=a;
while(salto>1){
salto=salto/2;
do{
ord=1;
for(j=1; j<=a-1-salto; j++){
k=j+salto;
if(m[j]>m[k]){
aux=m[j];
m[j]=m[k];
m[k]=aux;
ord=0;
}
}
}while(!ord);

}
}


void QuikShort(int m[], int izq, int der){
int i=izq,j=der;
int x,w;
x=m[(izq+der)/2];
do{
while(m[i] i++;
while(x j--;
if(i<=j){
w=m[i];
m[i]=m[j];
m[j]=w;
i++;
j--;
}
}while(i<=j);
if(izq if(i
};


void insercionbinaria(int m[], int a){

int i,j,p,u,c;
int aux;
for(i=1; i<=a; i++ ){
aux=m[i];
p=0;
u=i-1;
while(p<=u){
c=(p+u)/2;
if(m[c]>aux)
u=c-1;
else
p=c+1;
}
for(j=i-1; j>=p; j--)
m[j+1]=m[j];
m[p]=aux;
}
}