sábado, 23 de noviembre de 2013

Busqueda Binaria

#include<stdio.h>
main()
{
 int i, num[10]={1,2,3,11,12,13,15,17,21,22}, bus;
 printf("que numero desea buscar\n");
 scanf("%i", & bus);
 i=10/2;
 if(bus==num[i])
 {
  printf("el numero fue encontrado en la posicion %i", i);
 }
 else
 {
  if(bus<num[i])
  {
   for(i=4;bus<=num[i];i--)
   {
    if(num[i]==bus)
    {
     printf("el numero fue encontrado en la posicion %i", i);
     goto salida;
    }
   }
  }
  if(bus>num[i])
  {
   for(i=6;bus>=num[i];i++)
   {
    if(num[i]==bus)
    {
     printf("el numero fue encontrado en la posicion %i", i);
     goto salida;
    }
   }
  }
 }
 if(num[i]!=bus)
 {
  printf("el numero no se encuentra en el arreglo\n");
 }
 salida:
  printf("\nPulse una tecla para continuar");
  getch();
 return 0;
}

Busqueda Secuencial (Elementos en Orden)

#include<stdio.h>
main()
{
 int num[10]={1,2,4,6,8,10,34,35,46,57};
 int i, var;
 printf("que numero desea buscar\n");
 scanf("%i", & var);
 for(i=0; var>=num[i]; i++)
 {
  if(num[i]==var)
  {
   printf("el numero se encontro en la posicion %i\n", i);
   goto salida;
  }
 }
 if(num[i]!=var)
  {
   printf("el numero no se encuentra en el arreglo\n");
  }
 salida:
  printf("pulsa una tecla para continuar");
  getch();
}

Busqueda Secuencial (Elementos en Desorden)

#include<stdio.h>
main()
{
 int num[10]={10,23,12,1,2,5,65,4,22,9};
 int i, var;
 printf("que numero desea buscar\n");
 scanf("%i", & var);
 for(i=0; i<=9; i++)
 {
  if(num[i]==var)
  {
   printf("el numero se encontro en la posicion %i\n", i);
   goto salida;
  }
 }
 if(num[i]!=var)
  {
   printf("el numero no se encuentra en el arreglo\n");
  }
 salida:
  printf("Pulse una tecla para continuar");
  getch();
}

Metodos de Ordenamiento "Quicksort"

#include <stdio.h>
 
 void qs(int lista[],int limite_izq,int limite_der)
 {
     int izq,der,temporal,pivote;
 
     izq=limite_izq;
     der = limite_der;
     pivote = lista[(izq+der)/2];
 
     do{
         while(lista[izq]<pivote && izq<limite_der)izq++;
         while(pivote<lista[der] && der > limite_izq)der--;
         if(izq <=der)
         {
             temporal= lista[izq];
             lista[izq]=lista[der];
             lista[der]=temporal;
             izq++;
             der--;
 
         }
 
     }while(izq<=der);
     if(limite_izq<der){qs(lista,limite_izq,der);}
     if(limite_der>izq){qs(lista,izq,limite_der);}

 }
 
 void quicksort(int lista[],int n)
{
     qs(lista,0,n-1);
 }
 
 int main(int argc, const char * argv[])
 {
  system("COLOR 1F");
  system("TITLE QUICKSORT");
     int lista[10];
     int size = sizeof(lista)/sizeof(int);
  int i;
  for (i=0;i<=9;i++)
  {
   printf("\ndame un numero para asignarlo a la posocion numero %i:\n", i+1);
   scanf("%i", & lista[i]);
  }
  printf("el arreglo tiene los siguientes valores:\n");
  for(i=0;i<=9;i++)
  {
   printf("%i |", lista[i]);
  }
  printf("\npulse una tecla para continuar");
  getch();
     printf("\n");
     quicksort(lista,size);
  printf("el arreglo tiene los siguientes valores:\n");
  for(i=0;i<=9;i++)
  {
   printf("%i |", lista[i]);
  }
  printf("\npulse una tecla para continuar");
  getch();
     return 0;
 }

Metodos de Ordenamiento "Shell Sort"

#include<stdio.h>
main()
{
 int num[10], j, i, aux, k, n=10;
 for (i=0;i<=9;i++)
 {
  printf("\ndame un numero para asignarlo a la posocion numero %i:\n", i+1);
  scanf("%i", & num[i]);
 }
 printf("el arreglo tiene los siguientes valores:\n");
 for(i=0;i<=9;i++)
 {
  printf("%i |", num[i]);
 }
 printf("\npulse una tecla para continuar");
 getch();
 k=n/2;
 while(k>=1)
 {
  for(i=k;i<n;i++)
  {
   aux=num[i];
   j=i-k;
   while(j>=0 && num[j]>aux)
   {
    num[j+k]=num[j];
          j-=k;
   }
   num[j+k]=aux;
  }
  n=n/2;
 }
 printf("el arreglo tiene los siguientes valores:\n");
 for(i=0;i<=9;i++)
 {
  printf("%i |", num[i]);
 }
 printf("\npulse una tecla para continuar");
 getch();
}

Metodos de Ordenamiento "Selección Directa"

#include<stdio.h>
main()
{
int num[10];
int i, aux, j, min;
for (i=0;i<=9;i++)
 {
  printf("\ndame un numero para asignarlo a la posocion numero %i:\n", i+1);
  scanf("%i", & num[i]);
 }
 printf("el arreglo tiene los siguientes valores:\n");
 for(i=0;i<=9;i++)
 {
  printf("%i |", num[i]);
 }
 printf("\npulse una tecla para continuar");
 getch();
for(i=0; i<9; i++)
{
 min=num[i];
 for(j=i+1; j<10; j++)
 {
  if (num[j]<num[min])
  {
   min=j;
  }
 }
 aux=num[i];
 num[i]=num[min];
 num[min]=aux;
}
printf("el arreglo tiene los siguientes valores:\n");
 for(i=0;i<=9;i++)
 {
  printf("%i |", num[i]);
 }
 printf("\npulse una tecla para continuar");
 getch();
}

Metodos de Ordenamiento "Piedra-Intercambio Inverso"

#include<stdio.h>
main()
{
int num[10];
int i, aux, j;
for (i=0;i<=9;i++)
 {
  printf("\ndame un numero para asignarlo a la posocion numero %i:\n", i+1);
  scanf("%i", & num[i]);
 }
 printf("el arreglo tiene los siguientes valores:\n");
 for(i=0;i<=9;i++)
 {
  printf("%i |", num[i]);
 }
 printf("\npulse una tecla para continuar");
 getch();
for(j=9; j>0; j--)
{
 for(i=0; i<j; i++)
 {
  if (num[i]>num[i+1])
  {
   aux=num[i];
   num[i]=num[i+1];
   num[i+1]=aux;
  }
 }
}
printf("el arreglo tiene los siguientes valores:\n");
 for(i=0;i<=9;i++)
 {
  printf("%i |", num[i]);
 }
 printf("\npulse una tecla para continuar");
 getch();
}