leccion 6 ordenamientos internos
TRANSCRIPT
-
8/8/2019 Leccion 6 Ordenamientos Internos
1/21
Leccion 6 ORDENAMIENTOS INTERNOS
En esta Unidad explicaremos 4 algoritmos para el Ordenamiento de Arreglos en Memoria Ram.
A continuacin mencionaremos los diferentes mtodos para ordenar:
1. Burbuja2. ShellSort
3. RadixSort
4. QuickSort
Burbuja
Definicin:
El mtodo de la burbuja es una comparacin lineal con cada uno de los elementos, el elemento que sea
menor contra el que se esta comparado intercambiaran posiciones. Este mtodo no es recomendado para
grandes comparaciones, ya que es un proceso muy lento y requiere de una gran cantidad de Memoria
Ram.
Programa:
#include
#include
class Lista
{
private:
int Lista[10],N;
public:
Lista()
{
for(int i=0;i
-
8/8/2019 Leccion 6 Ordenamientos Internos
2/21
void Burbuja(void)
{
if(N!=0)
{
int i,j,aux;
for(i=0;i
-
8/8/2019 Leccion 6 Ordenamientos Internos
3/21
cout
-
8/8/2019 Leccion 6 Ordenamientos Internos
4/21
cout
-
8/8/2019 Leccion 6 Ordenamientos Internos
5/21
break;
case 2:
tec.Burbuja();
break;
case 3:
cout
-
8/8/2019 Leccion 6 Ordenamientos Internos
6/21
ShellSort
Definicin:
Esta forma de ordenacin es muy parecida a la ordenacin con burbuja. La diferencia es que no es una
comparacin lineal, sino que trabaja con una segmentacin entre los datos. Por lo tanto es un buen
mtodo, pero no el mejor para implementarlos en grandes arreglos.
Programa:
#include
#include
class Lista
{
private:
int Lista[10],N;
public:
Lista()
{
for(int i=0;i
-
8/8/2019 Leccion 6 Ordenamientos Internos
7/21
if(Lista[i-salto]
-
8/8/2019 Leccion 6 Ordenamientos Internos
8/21
if(N
-
8/8/2019 Leccion 6 Ordenamientos Internos
9/21
{
for(int i=0;i
-
8/8/2019 Leccion 6 Ordenamientos Internos
10/21
cin>>res;
tec.Busqueda(res);
break;
case 4:
cout
-
8/8/2019 Leccion 6 Ordenamientos Internos
11/21
Programa:
#include
#include
#include
class Lista
{
private:
int Lista[10],Temp[10],Elementos,N;
public:
Lista()
{
for(int i=0;i
-
8/8/2019 Leccion 6 Ordenamientos Internos
12/21
}
void RadixSort (int byte, int N, int *fuente, int *dest)
{
int cont[256];
int ind[256];
int i;
memset(cont,0,sizeof(cont));
for(i=0;i>(byte*8))&0xff]++;
ind[0]=0;
for(i=1;i(byte*8))&0xff]++]=fuente[i];
}
void Busqueda(int Elem)
{
if(N!=9)
{
for(int i=0;i
-
8/8/2019 Leccion 6 Ordenamientos Internos
13/21
}
void Insertar(int Elem)
{
if(N!=-1)
{
Elementos++;
Lista[N]=Elem;
N--;
cout
-
8/8/2019 Leccion 6 Ordenamientos Internos
14/21
return;
}
void Recorrido()
{
if(N!=9)
{
for(int i=9;i!=N;i--)
cout
-
8/8/2019 Leccion 6 Ordenamientos Internos
15/21
break;
case 2:
tec.Ordenar();
break;
case 3:
cout
-
8/8/2019 Leccion 6 Ordenamientos Internos
16/21
}
QuickSort
Definicin:
Probablemente este ser el mejor de los mtodos que mencionamos en esta unidad. Este divide
aleatoriamente el arreglo para comparar si un elemento es mayor o menor. Dependiendo el resultado lo
partir ya sea por la izquierda o derecha, de esta forma se repite el procedimiento para ordenarlos.
Programa:
#include
#include
class Lista
{
private:
int Lista[10],N;
public:
Lista()
{
for(int i=0;i
-
8/8/2019 Leccion 6 Ordenamientos Internos
17/21
while(Lista[dch]>Lista[menor])
dch--;
while((izq
-
8/8/2019 Leccion 6 Ordenamientos Internos
18/21
cout
-
8/8/2019 Leccion 6 Ordenamientos Internos
19/21
void Eliminar(int Elem)
{
if(N!=0)
{
for(int i=0;i
-
8/8/2019 Leccion 6 Ordenamientos Internos
20/21
while(op!=6)
{
clrscr();
cout
-
8/8/2019 Leccion 6 Ordenamientos Internos
21/21
cin>>res;
tec.Eliminar(res);
break;
case 6:
cout