Está en la página 1de 7

//busqueda secuencial o lineal

#include <iostream>
using namespace std;
int search_lin(int a[], int n, int key);
int main ()
{ int a[]={10,40,50,30,20,60};
int k,key = 50;
int n=sizeof(a)/sizeof(int);
k=search_lin(a,n,key);
cout<<"\nBusqueda secuencial"<<endl;
cout<<"\nLave a buscar = "<<key<<endl;
if(k==-1)
{
cout<<"\nno exite el elemento"<<endl;
}
else
cout<<"\nEl elemento "<<key<<" tiene el indice: "<<k<<endl;
return 0;
}
int search_lin(int a[], int n, int key)
{
int i=0;
while(i<n && a[i]!=key)
i++;
return (i==n)?(-1):(i);
}
-----------------------------------------------------------
//busqueda binaria version iterativa
//precondicional: el arreglo debe estar ORDENADO
#include <iostream>
using namespace std;
int search_lin(int a[], int n, int key);
int main ()
{ int a[]={10,20,30,40,50,60};
int k,key = 50;
int n=sizeof(a)/sizeof(int);
k=search_lin(a,n,key);
cout<<"\nBusqueda secuencial"<<endl;
cout<<"\nLave a buscar = "<<key<<endl;
if(k==-1)
{
cout<<"\nno exite el elemento"<<endl;
}
else
cout<<"\nEl elemento "<<key<<" tiene el indice: "<<k<<endl;
return 0;
}
int search_lin(int a[], int n, int key)
{ //version iterativa
int izq =0, der=n-1, mitad;
while(izq<=der)
{
mitad=(izq+der)/2;
if(a[mitad]<key)
izq=mitad+1;
else
if( a[mitad]>key)
der=mitad-1;
else
return mitad; // encontrado
}
return -1; //no encontrado
}
----------------------------------------------------

//busqueda binaria recursiva


#include <iostream>
using namespace std;
int search_bin_recursiva(int a[], int key, int izq, int der);
int main ()
{ int a[]={10,20,30,40,50,60};
int izq=0, der=5, key=40;
cout<<"\nBusqueda binaria recursiva"<<endl;
cout<<"\nLave a buscar = "<<key<<endl;
int k=search_bin_recursiva(a,key,izq,der);

if(k==-1)
{
cout<<"\nno exite el elemento"<<endl;
}
else
cout<<"\nEl elemento "<<key<<" tiene el indice: "<<k<<endl;
return 0;
}
int search_bin_recursiva(int a[],int key,int izq, int der)
{ //version recursiva
int mitad;
if(izq>der)
return (-1);
mitad=(izq + der)/2; //divicion entera
return (key==a[mitad]?mitad:key<a[mitad]?
search_bin_recursiva(a,key,izq,mitad-1):
search_bin_recursiva(a,key,mitad+1,der));
}
-------------------------------------------------------------------
//ordencion metodo quickshort
#include <iostream>
const int MAX = 20;

void QuickSort(int left, int right, int a[]);


void leerArray(int a[], int n);
void escribeArray(int a[],int n);

using namespace std;


int main()
{
int n, x[MAX];
cout<<"Cuantos enteros a ordenar en el array? ";
cin >>n;
leerArray(x,n);
int left=0;
int right=n-1;
QuickSort(left,right,x); //llamasa la funcion ordenar
cout<<"\nEl array ordenado es: ";
escribeArray(x,n);
return 0;
}
void QuickSort(int left,int right, int a[])
{
int aux, x;
int i,j;
i=left; //extremo izquierdo
j=right; //extremo derecho
x=(a[left] + a[right])/2; //pivote

do{
while(a[i] < x)
i=i+1;
while(x < a[j])
j=j-1;
if(i<j) //intercambiar
{
aux = a[i];
a[i] = a[j];
a[j] = aux;
i++;
j--;
}
else
if(i==j)
i++;
}while(i<=j);
if(left < j)
QuickSort(left,j,a);
if(right > i)
QuickSort(i,right,a);
}
void leerArray(int a[], int n)
{
cout<<"Ingrese "<<n<<" datos en el array: "<<endl;
for(int i=0;i<n;i++)
{
cout<<"a ["<<i<<"] = ";
cin>>a[i];
}
}
void escribeArray(int a[], int n)
{
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}

--------------------------------------------------------------
//ordenacion por el algoritmo de insercion directa
#include <iostream>
const int MAX = 20;

void insercionDirecta(int a[], int n);


void leerArray(int a[], int n);
void escribeArray(int a[],int n);

using namespace std;


int main()
{
int n, x[MAX];
cout<<"Cuantos enteros a ordenar en el array? ";
cin >>n;
leerArray(x,n);
insercionDirecta(x,n); //llamasa la funcion ordenar
cout<<"\nEl array ordenado es: ";
escribeArray(x,n);
return 0;
}
void insercionDirecta(int a[], int n)
{
int i,j;
for(i=0;i<n;i++)
{
int temp = a[i];
j=i-1;
while( j>=0 && temp < a[j])
a[j+1]=a[j--];
a[j+1]=temp;
}
}
void leerArray(int a[], int n)
{
cout<<"Ingrese "<<n<<" datos en el array: "<<endl;
for(int i=0;i<n;i++)
{
cout<<"a ["<<i<<"] = ";
cin>>a[i];
}
}
void escribeArray(int a[], int n)
{
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}

-------------------------------------------------------------
//ordenacion por el algoritmo de la burbuja
//metodo1: transportando en cada iteracion el mayor elemento hacia la parte derecha
del arreglo
#include <iostream>
const int MAX = 50;

void burbuja1(int x[MAX], int n);


void leerArray(int x[MAX], int n);
void escribeArray(int x[MAX],int n);

using namespace std;


int main()
{
int n, a[MAX];
cout<<"Cuantos enteros a ordenar en el array? ";
cin >>n;
leerArray(a,n);
burbuja1(a,n); //llamasa la funcion ordenar
cout<<"\nEl array ordenado es: ";
escribeArray(a,n);
return 0;
}
void burbuja1(int x[MAX], int n)
{
int aux,i,j;
for(i=n-1;i>0;i--)
{
for(j=0;j<i;j++)
{
if(x[j] > x[j+1])
{ //intercambiar
aux = x[j];
x[j] = x[j+1];
x[j+1] = aux;
}
}
}

}
void leerArray(int a[], int n)
{
cout<<"Ingrese "<<n<<" datos en el array: "<<endl;
for(int i=0;i<n;i++)
{
cout<<"a ["<<i<<"] = ";
cin>>a[i];
}
}
void escribeArray(int a[], int n)
{
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}

------------------------------------------------
// Recusivo ejemplo1
#include <iostream>
using namespace std;
//factorial recursivo
float fact(int n);
int main ()
{
int n;
cout<<"\nIngrese n: ";
cin>>n;
cout<<"\nEl Factorial de "<<n<<" es: "<<fact(n)<<endl;
return 0;
}
float fact(int n)
{
if(n==0) //caso base
return 1;
else //caso general
return n*fact(n-1); //la funcion se llama a si misma
}
-----------------------------------------------------------
//Recursivo2
#include <iostream>
#include <stdlib.h>
using namespace std;
//funcion fibonacci recursivo
float fibo(int n);
int main ()
{
int n;
cout<<"\nIngrese n: ";
cin>>n;
cout<<"\nEl Fibonacci de "<<n<<" es: "<<fibo(n)<<endl;
return 0;
}
float fibo(int n)
{
if(n==0 || n==1) //caso base
return n;
else //caso general
return (fibo(n-1) + fibo(n-2)); //la funcion se llama a si misma
}
------------------------------------------------------------------------
// Recursivo3
#include <iostream>
using namespace std;
//multiplicacion a*b recursiva
float multrec(int a,int b);
int main ()
{
int a,b;
cout<<"\nIngrese dos enteros: ";
cin>>a>>b;
cout<<"\nEl Producto es: "<<multrec(a,b)<<endl;
return 0;
}
float multrec(int a,int b)
{
if(b==1) //caso base
return a;
else //caso general
return (a + multrec(a,b-1));
}
----------------------------------------------------------------------------

// Recursivo4
#include <iostream>
using namespace std;
//funcion recursiva potencia x a la y
float potenrec(int x,int n);
int main ()
{
int x,n;
cout<<"\nIngrese base y exponente enteros positivos: ";
cin>>x>>n;
cout<<endl<<x<<"a la "<<n<<" = "<<potenrec(x,n)<<endl;
return 0;
}
float potenrec(int x,int n)
{
if(n==0) //caso base
return 1;
else //caso general
return (x*potenrec(x,n-1));
}

----------------------------------------------------------------------
// Recursivo5
#include <iostream>
using namespace std;
//funcion que suma recursivamente los elementos de un array
float sumarec(int a[],int n);
int main ()
{
int a[]={1,2,3,4,5,6};
int n = sizeof(a)/sizeof(int);
cout<<"\nSuma de elementos = "<<sumarec(a,n)<<endl;
return 0;
}
float sumarec(int a[],int n)
{
if(n==1) //caso base
return a[0];
else //caso general
return (a[n-1] + sumarec(a, n-1));
}

También podría gustarte