#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;
}
sábado, 23 de noviembre de 2013
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();
}
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();
}
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;
}
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();
}
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();
}
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();
}
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();
}
Metodos de Ordenamiento "Burbuja"
#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=0; j<9; j++)
{
for(i=9; 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();
}
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=0; j<9; j++)
{
for(i=9; 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();
}
Metodos de Ordenamiento "Insercion Directa"
#include <stdio.h>//metodo inverso
int num[10]={10,4,20,32,59,3,49,12,14,1};
int i,aux,j;
main()
{printf("\nEl arreglo original es:\n");
for(i=0;i<=9;i++)
{
printf("%d,",num[i]);
printf("\n");
}
getch();
for (i=1;i<=9;i++)
{
aux=num[i];
j=i-1;
while (aux<num[j]||j==0)
{num[j+1]=num[j];
j--;
}
num[j+1]=aux;
}
printf("\nEl arreglo ordenado es:\n");
for(i=0;i<=9;i++)
{
printf("%d,",num[i]);
printf("\n");
}getch();
}
int num[10]={10,4,20,32,59,3,49,12,14,1};
int i,aux,j;
main()
{printf("\nEl arreglo original es:\n");
for(i=0;i<=9;i++)
{
printf("%d,",num[i]);
printf("\n");
}
getch();
for (i=1;i<=9;i++)
{
aux=num[i];
j=i-1;
while (aux<num[j]||j==0)
{num[j+1]=num[j];
j--;
}
num[j+1]=aux;
}
printf("\nEl arreglo ordenado es:\n");
for(i=0;i<=9;i++)
{
printf("%d,",num[i]);
printf("\n");
}getch();
}
Metodos de Ordenamiento "Shaker Sort"
#include<stdio.h>
#include<conio.h>
main ()
{
int num [10], i, j, aux, a;
for (i=0; i<=9; i++)
{
printf("\nIngresa el valor de la posicion %d: ", i+1);
scanf("%i", &num[i]);
}
getch();
for (j=-1; j<=10; j++)
{
for (i=10; i>j; i--)
{
if (num [i]<num[i-1])
{
aux = num[i];
num[i] = num[i-1];
num[i-1] = aux;
}
for (i=10; i>j; i--)
{
if (num [i]>num[i+1])
{
aux = num[i];
num[i] = num[i+1];
num[i+1] = aux;
}
}
}
}
printf("\n El arreglo ordenado es:\n");
for (i=0; i<=9; i++)
printf("%i | ", num[i]);
return 0;
getch ();
}
#include<conio.h>
main ()
{
int num [10], i, j, aux, a;
for (i=0; i<=9; i++)
{
printf("\nIngresa el valor de la posicion %d: ", i+1);
scanf("%i", &num[i]);
}
getch();
for (j=-1; j<=10; j++)
{
for (i=10; i>j; i--)
{
if (num [i]<num[i-1])
{
aux = num[i];
num[i] = num[i-1];
num[i-1] = aux;
}
for (i=10; i>j; i--)
{
if (num [i]>num[i+1])
{
aux = num[i];
num[i] = num[i+1];
num[i+1] = aux;
}
}
}
}
printf("\n El arreglo ordenado es:\n");
for (i=0; i<=9; i++)
printf("%i | ", num[i]);
return 0;
getch ();
}
Árbol-Programación en C
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
struct arbol {
struct arbol *izq;
int clave;
struct arbol *der; };
typedef struct arbol ARB;
typedef ARB *ARBPT;
void inserta(ARBPT *, int);
void menu(void);
void preorden(ARBPT);
void busqueda(ARBPT, int);
main()
{ ARBPT raiz = NULL;
int opcion, clav;
menu();
fflush(stdin);
printf("\n Elige opcion: ");
scanf("%d", &opcion);
while (opcion != 4) {
switch(opcion)
{ case 1 : printf("\n Digita la clave del nodo : ");
scanf("%d", &clav);
inserta(&raiz, clav) ;
break;
case 2 : printf("\n\n Recorrido del arbol en PREORDEN\n\n");
printf("\n ");
preorden(raiz);
printf("\n\n Enter para continuar...");
getch();
break;
case 3 : printf("\n Digita la clave del nodo que quieres buscar : ");
scanf("%d", &clav);
busqueda(raiz, clav) ;
getch();
break;
default : printf("\n\n Opcion no permitida.\n\n");
printf("\n\n Enter para continuar...\n\n");
getch();
menu();
}
menu();
fflush(stdin);
printf("\n Elige opcion: ");
scanf("%d", &opcion);
}
printf("\n Fin del programa.\n\n");
printf("\n Enter para terminar...");
getch();
}
void menu(void)
{ system("cls");
printf("\n\n\n\n"
" OPERACIONES DISPONIBLES CON EL ARBOL: \n\n\n\n"
" 1 INSERTAR UN ELEMENTO AL ARBOL\n\n"
" 2 RECORRER EL ARBOL EN PREORDEN\n\n"
" 3 BUSQUEDA EN EL ARBOL\n\n"
" 4 SALIR DEL PROGRAMA\n\n");
}
void inserta(ARBPT *raiz, int cla)
{ ARBPT aux1, aux2, aux3= NULL;
aux1 = (struct arbol *) malloc(sizeof(struct arbol));
if (aux1 != NULL)
{aux1->clave = cla;
aux1->izq = NULL;
aux1->der = NULL;
aux2 = *raiz;
while (aux2 != NULL)
{aux3 = aux2;
if (cla == aux2->clave)
{ printf("\n\n Clave del nodo duplicado\n");
printf(" No insertado\n");
printf(" Enter para continuar");
getch();
goto salida;
}
if (cla < aux2->clave)
aux2 = aux2->izq;
else
aux2 = aux2->der;
}
if (aux3 == NULL)
*raiz = aux1;
else
{ if (cla == aux3->clave)
{ printf("\n\n Clave del nodo duplicado\n");
printf(" No insertado\n");
printf(" Enter para continuar");
getch();
goto salida;
}
if (cla < aux3->clave)
aux3->izq = aux1;
if (cla > aux3->clave)
aux3->der = aux1;
}
}
else
{ printf("\n Nodo no insertado" );
printf("\n No hay memoria disponible\n\n");
printf("\n Emter para continuar...");
getch();
}
salida:
printf("\n Enter para menu....");
getch();
}
void preorden(ARBPT ap1)
{ ARBPT ap2;
if(ap1 != NULL)
{ printf("\n raiz = %2d ", ap1->clave);
ap2 = ap1->izq;
if (ap2 != NULL)
printf(" izquierdo : %2d", ap2->clave);
else printf(" izquierdo NULO");
preorden(ap2);
ap2= ap1->der;
if (ap2 != NULL)
printf(" derecho : %2d", ap2->clave);
else printf(" derecho NULO");
preorden(ap2);
}
}
void busqueda(ARBPT ap1, int clav)
{
if(ap1==NULL)
{
printf("\nodo no encontrado!");
}
else
{
while(ap1!=NULL)
{
printf("\nRaiz:%i",ap1->clave);
if(ap1->clave==clav)
{
printf("\n\nNodo encontrado:%i",ap1->clave);
ap1=NULL;
}
else
{
if(clav < ap1->clave )
{
ap1=ap1->izq;
printf("Izquierdo: %i",ap1->clave);
}
else
{
ap1=ap1->der;
printf("Derecho: %i",ap1->clave);
}
}
}
}
}
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
struct arbol {
struct arbol *izq;
int clave;
struct arbol *der; };
typedef struct arbol ARB;
typedef ARB *ARBPT;
void inserta(ARBPT *, int);
void menu(void);
void preorden(ARBPT);
void busqueda(ARBPT, int);
main()
{ ARBPT raiz = NULL;
int opcion, clav;
menu();
fflush(stdin);
printf("\n Elige opcion: ");
scanf("%d", &opcion);
while (opcion != 4) {
switch(opcion)
{ case 1 : printf("\n Digita la clave del nodo : ");
scanf("%d", &clav);
inserta(&raiz, clav) ;
break;
case 2 : printf("\n\n Recorrido del arbol en PREORDEN\n\n");
printf("\n ");
preorden(raiz);
printf("\n\n Enter para continuar...");
getch();
break;
case 3 : printf("\n Digita la clave del nodo que quieres buscar : ");
scanf("%d", &clav);
busqueda(raiz, clav) ;
getch();
break;
default : printf("\n\n Opcion no permitida.\n\n");
printf("\n\n Enter para continuar...\n\n");
getch();
menu();
}
menu();
fflush(stdin);
printf("\n Elige opcion: ");
scanf("%d", &opcion);
}
printf("\n Fin del programa.\n\n");
printf("\n Enter para terminar...");
getch();
}
void menu(void)
{ system("cls");
printf("\n\n\n\n"
" OPERACIONES DISPONIBLES CON EL ARBOL: \n\n\n\n"
" 1 INSERTAR UN ELEMENTO AL ARBOL\n\n"
" 2 RECORRER EL ARBOL EN PREORDEN\n\n"
" 3 BUSQUEDA EN EL ARBOL\n\n"
" 4 SALIR DEL PROGRAMA\n\n");
}
void inserta(ARBPT *raiz, int cla)
{ ARBPT aux1, aux2, aux3= NULL;
aux1 = (struct arbol *) malloc(sizeof(struct arbol));
if (aux1 != NULL)
{aux1->clave = cla;
aux1->izq = NULL;
aux1->der = NULL;
aux2 = *raiz;
while (aux2 != NULL)
{aux3 = aux2;
if (cla == aux2->clave)
{ printf("\n\n Clave del nodo duplicado\n");
printf(" No insertado\n");
printf(" Enter para continuar");
getch();
goto salida;
}
if (cla < aux2->clave)
aux2 = aux2->izq;
else
aux2 = aux2->der;
}
if (aux3 == NULL)
*raiz = aux1;
else
{ if (cla == aux3->clave)
{ printf("\n\n Clave del nodo duplicado\n");
printf(" No insertado\n");
printf(" Enter para continuar");
getch();
goto salida;
}
if (cla < aux3->clave)
aux3->izq = aux1;
if (cla > aux3->clave)
aux3->der = aux1;
}
}
else
{ printf("\n Nodo no insertado" );
printf("\n No hay memoria disponible\n\n");
printf("\n Emter para continuar...");
getch();
}
salida:
printf("\n Enter para menu....");
getch();
}
void preorden(ARBPT ap1)
{ ARBPT ap2;
if(ap1 != NULL)
{ printf("\n raiz = %2d ", ap1->clave);
ap2 = ap1->izq;
if (ap2 != NULL)
printf(" izquierdo : %2d", ap2->clave);
else printf(" izquierdo NULO");
preorden(ap2);
ap2= ap1->der;
if (ap2 != NULL)
printf(" derecho : %2d", ap2->clave);
else printf(" derecho NULO");
preorden(ap2);
}
}
void busqueda(ARBPT ap1, int clav)
{
if(ap1==NULL)
{
printf("\nodo no encontrado!");
}
else
{
while(ap1!=NULL)
{
printf("\nRaiz:%i",ap1->clave);
if(ap1->clave==clav)
{
printf("\n\nNodo encontrado:%i",ap1->clave);
ap1=NULL;
}
else
{
if(clav < ap1->clave )
{
ap1=ap1->izq;
printf("Izquierdo: %i",ap1->clave);
}
else
{
ap1=ap1->der;
printf("Derecho: %i",ap1->clave);
}
}
}
}
}

Suscribirse a:
Comentarios (Atom)









