Está en la página 1de 14

ORDENACIN Y BSQUEDA

PARTE I: ALGORITMOS DE ORDENACION


1. Algoritmo de la burbuja: presenta 3 variantes
Ejemplo 1:

#include <iostream>
const int MAX=50;
void burbuja(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? "<< endl;
cin>>n;
leerarray(a,n);
burbuja(a,n);
cout<<"\n El array ordenado es: ";
escribearray(a,n);
return 0;
}
void burbuja(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 x[MAX], int n)
{
cout<<" Ingrese"<<n<<" datos en el array: "<<endl;
for (int i=0; i<n;i++)
{
cout<<"x["<<i<<"]=";
cin>>x[i];
}
}
void escribearray(int x[MAX], int n)
{
for (int i=0; i<n; i++)
cout<<x[i]<<" ";
cout<<endl;
}
Ejemplo 2:

//ordenacion por el algoritmo de la burbuja


#include <iostream>
const int MAX=20;
void burbujados(int x[], int n);
void leerarray (int x[], int n);
void escribearray (int x[], int n);
using namespace std;
int main()
{
int n, a[MAX];
cout <<" Cuantos enteros a ordenar en el array? "<< endl;
cin>>n;
leerarray(a,n);
burbujados(a,n);
cout<<"\n El array ordenado es: ";
escribearray(a,n);
return 0;
}
void burbujados(int x[MAX], int n)
{
int aux;
for (int i=0; i>n; i++)
for (int j=0; j<n-i; j++)
{

if (x[j]>x[j+1])

{ aux=x[j];
x[j]=x[j+1];
x[j+1]=aux;
}
}
}
void leerarray(int x[], int n)
{
cout<<" Ingrese"<<n<<" datos en el array: "<<endl;
for (int i=0; i<n;i++)
{
cout<<"x["<<i<<"]=";
cin>>x[i];
}
}
void escribearray(int x[], int n)
{
for (int i=0; i<n; i++)
cout<<x[i]<<" ";
cout<<endl;
}
Ejemplo 3:

//ordenacion por el algoritmo de la burbuja-metodo 3


#include <iostream>

const int MAX=20;


void burbujatres(int x[], int n);
void leerarray (int x[], int n);
void escribearray (int x[], int n);
using namespace std;
int main()
{
int n, a[MAX];
cout <<" Cuantos enteros a ordenar en el array? "<< endl;
cin>>n;
leerarray(a,n);
burbujatres(a,n);
cout<<"\n El array ordenado es: ";
escribearray(a,n);
return 0;
}
void burbujatres(int x[MAX], int n)
{
int aux;
bool flag=false;
while (flag==false)
{flag=true;
for (int k=0; k<n; k++)
{ if(x[k]>x[k+1])
{
aux=x[k];
x[k]=x[k+1];
x[k+1]=aux;
flag=false;
}

}
}
}
void leerarray(int x[], int n)
{
cout<<" Ingrese"<<n<<" datos en el array: "<<endl;
for (int i=0; i<n;i++)
{
cout<<"x["<<i<<"]=";
cin>>x[i];
}
}
void escribearray(int x[], int n)
{
for (int i=0; i<n; i++)
cout<<x[i]<<" ";
cout<<endl;
}
2. mtodo de ordenacin por seleccin:
Ejemplo 4:

//ordenacion por el algoritmo de seleccion directa


#include <iostream>
const int MAX=20;
void seleccion_directa( 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? "<< endl;
cin>>n;
leerarray(x,n);
seleccion_directa(x,n);
cout<<"\n El array ordenado es: ";
escribearray(x,n);
return 0;
}
void seleccion_directa(int a[], int n)
{
int i, j;
for (int k=0; k<n; k++)
{
int menor=a[i];
k=i;
for (j=i+1; j<n; j++)
{
if (a[j]< menor)
{
menor=a[j];
k=j;
}
}
a[k]=a[i];

a[i]=menor;
}
}
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;
}
Ejemplo 5:

//ordenacion por el algoritmo 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? "<< endl;
cin>>n;
leerarray(x,n);
inserciondirecta(x,n);
cout<<"\n El array ordenado es: ";
escribearray(x,n);
return 0;
}
void inserciondirecta(int a[], int n)
{
int i, j;
for (int 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;
}
4. Mtodo de shell
Ejemplo 6:

//ordenacion por el metodo shell


#include <iostream>
const int MAX=20;
void shellshort( 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? "<< endl;
cin>>n;

leerarray(x,n);
shellshort(x,n);
cout<<"\n El array ordenado es: ";
escribearray(x,n);
return 0;
}
void shellshort(int a[], int n)
{
int i, salto, aux;
salto=n+1;
bool flag;
while (salto>0)
{ salto=salto/2;
flag=true;
while (flag==true)
{ flag =false;
i=0;
while((i+salto)<n)
{ if(a[i]>a[i]+salto)
{ //intercambiar
aux=a[i];
a[i]=a[i+salto];
a[i+salto]=aux;
flag=true;
}
i=i+1;

}
}

}
}
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;
}
Mtodo Quisksort
Ejemplo 7:
//ordenacion por el algoritmo de quicksort
#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? "<< endl;

cin>>n;
leerarray(x,n);
int left=0;
int right=n-1;
quicksort(left, right, x);
cout<<"\n El array ordenado es: ";
escribearray(x,n);
return 0;
}
void quicksort (int a[], int n)
{
int aux, x;
int i,j;
i=left;
j=right;
x=(a[left]+a[right])/2;
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;
}

También podría gustarte