Está en la página 1de 11

Mtodos de Ordenamiento

Ao de la Diversificacin Productiva y
del Fortalecimiento de la Educacin

Alumnos:

Christian Diego Pastor Urquiaga


Manuel Anchorena Daz

Curso:

Computacin.

Escuela:

Ing. De Sistemas.

Ciclo:

ll

2015

Mtodos de Ordenamiento

Ordenamiento por Seleccin


1.- Descripcin.
Consiste en lo siguiente:
Se Busca el elemento ms pequeo de la lista.
Se intercambia con el elemento ubicado en la primera posicin de la lista.
Se busca el segundo elemento ms pequeo de la lista.
Intercambiamos con el elemento que ocupa la segunda posicin en la lista.
Se repite este proceso hasta que hayas ordenado toda la lista.

2.- Ejemplo.
Ordenamos la siguiente lista:
4

Comenzamos buscando el elemento menor entre la primera y ltima posicin.


Es el 1. Lo intercambiamos con el 4 y la lista queda as:
1

Ahora buscamos el menor elemento entre la segunda y la ltima posicin. Es


el 2. Lo intercambiamos con el elemento en la segunda posicin, es decir el 3.
La lista queda as:
1

Buscamos el menor elemento entre la tercera posicin y la ltima. Es el 3, que


intercambiamos con el 5:
1

El menor elemento entre la cuarta y quinta posicin es el 4, que


intercambiamos con el 5:
1

Y terminamos, ya tenemos nuestra lista ordenada.

Mtodos de Ordenamiento

3.- Ventajas:
Fcil implementacin.
No requiere memoria adicional.
Realiza pocos intercambios.
Rendimiento constante: poca diferencia entre el peor y el mejor caso.

4.- Desventajas:
Lento, ya que realiza numerosas comparaciones.

Algoritmo C++:
#include
#include
#include
#include
#include

"stdafx.h"
<iostream>
<time.h>
<stdlib.h>
<conio.h>

using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
srand((unsigned)time(NULL));
int i,f,c,j,k,x,min; float aux; int m[50][50], v[50];
cout<<"Informacion de la matriz:"<<endl;
cout<<"Numero de Filas: "; cin>>f;
cout<<"Numero de Columnas: "; cin>>c;
for(x=0;x<f*c;x++){
v[x]=1+rand()%20;}
for(x=0;x<f*c;x++)
for(int i=0;i<f;i++)
for(int j=0;j<c;j++)
{
m[i][j]=v[x];x++;
}
cout<<"MATRIZ ORIGINAL:"<<endl;
for(i=0;i<f;i++) {
for(j=0;j<c;j++)
{ cout<<m[i][j]<<"\t";}cout<<endl;}

Mtodos de Ordenamiento

for (x=0; x<f*c-1; x++)


{
min=x;
for(k=x+1; k<f*c; k++)
if(v[min] > v[k])
min=k;
aux=v[min];
v[min]=v[x];
v[x]=aux ;
}
cout<<"MATRIZ ORDENADA: "<<endl;
for(x=0;x<f*c;x++)
for( i=0;i<f;i++)
for(j=0;j<c;j++)
{
m[i][j]=v[x];x++;
}
for(i=0;i<f;i++) {
for( j=0;j<c;j++)
{ cout<<m[i][j]<<"\t";}cout<<endl;}

system("pause");
return 0;
}

Mtodos de Ordenamiento

Ordenamiento por Montculos (Heapsort)


1.- Descripcin:
Es un rbol binario de atura mnima, en que los nodos del nivel ms bajo estn
ms a la izquierda posible
La informacin es almacenada de manera que al recorrer un camino desde la
raz hacia las hojas, los datos se encuentran en orden descendente
Si se presenta este arreglo resultante como un rbol se observa que cada
elemento es el padre de los otros elementos z[i], z[i+1] puesto que es una
estructura con un grupo el cual j<=i/2
En la segunda parte del procedimiento se realiza el proceso de ordenamiento
en la cual se recorre el rbol de tal forma que el resultado es una lista ordenada
de elementos.
El vector debe tener estructura de montculo, es decir un rbol en el que los
hijos de cada nodo son siempre menores que el padre
De esta forma no se tiene que recorrer toda la zona desordenada para
encontrar el elemento mximo, ya que en este caso la ordenacin se realiza en
sentido inverso.

2.- Cdigo de Implementacin:

Mtodos de Ordenamiento

Algoritmo C++:
#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
srand((unsigned)time(NULL));
int A[100],ma[100][100],j,item,temp,i,k,f,c,m,n;
cout<<"Informacion de la matriz "<<endl;
cout<<"Ingrese el numero de Filas: "; cin>>f;
cout<<"Ingrese el numero de Columnas: "; cin>>c;
for(i=1;i<=f*c;i++){
A[i]=1+rand()%20;}
for(i=1;i<=f*c;i++)
for(m=0;m<f;m++)
for(n=0;n<c;n++){
ma[m][n]=A[i];i++;}

Mtodos de Ordenamiento
cout<<"Matriz Original "<<endl;
for(m=0;m<f;m++){
for(n=0;n<c;n++){
cout<<ma[m][n]<<"\t";}cout<<endl;}
//ORDENANDO...
for(k=f*c;k>0;k--)
{
for(i=1;i<=k;i++)
{
item=A[i];
j=i/2;
while(j>0 && A[j]<item)
{
A[i]=A[j];
i=j;
j=j/2;
}
A[i]=item;
}
temp=A[1];
A[1]=A[k];
A[k]=temp;
}
cout<<"\nMATRIZ ORDENADA"<<endl;
for(i=1;i<=f*c;i++)
for(m=0;m<f;m++)
for(n=0;n<c;n++){
ma[m][n]=A[i];i++;}
for(m=0;m<f;m++){
for(n=0;n<c;n++){
cout<<ma[m][n]<<"\t";}cout<<endl;}
system("pause");
return 0;
}

Mtodos de Ordenamiento

Ordenamiento por Insercin


Concepto:
Dado un conjunto de n elementos (a1, a2,, an); el ordenamiento por insercin
consiste en encontrar una permutacin ordenada, bien sea en sentido creciente
o decreciente.
Se compara el segundo elemento con el primero y si verifica de acuerdo a la
condicin definida, cambia de posicin con el de la izquierda, sino se mantiene
en su posicion; luego se compara el siguiente elemento con los de la izquierda;
y as sucesivamente.

Mtodos de Ordenamiento
Ejemplo:

//Metodo de Insercion
#include "stdafx.h"
#include<iostream>
#include<math.h>
using namespace std;
int mt[10][10],v[100];
int Ingresar_Dimension(){ int a;
do{
cout<<"Ingrese la dimension de la matriz: ";
cin>>a;
}
while(a<0 || a>10);
return a;
}
void Datos_Matriz(int a){
for(int i=0; i<a; i++){
for(int j=0; j<a; j++){
cout<<"mt["<<i+1<<"]["<<j+1<<"]=";cin>>mt[i][j];
}
}
}
void Impresion(int a){
for(int k=0; k<a; k++){
for(int j=0; j<a; j++){
printf("%4d",mt[k][j]);
}
cout<<endl;
}
}
void Inserccion (int a){
int aux;
int cont=0;
for(int i=0; i<a; i++){
for(int j=0; j<a; j++){
v[cont]=mt[i][j];
cont++;
}

for(int i=1; i<cont;i++){


aux=v[i];
for(int j=i; (j>0)&&(aux<v[j-1]); j--){
v[j]=v[j-1];
v[j-1]=aux;
}
}

Mtodos de Ordenamiento

int cont1=0;
for(int i=0; i<a; i++){
for(int j=0; j<a; j++){
mt[i][j]=v[cont1];
cont1++;
}
}
cout<<endl;
Impresion(a);
}
int _tmain(int argc, _TCHAR* argv[])
{
int n;
n=Ingresar_Dimension();
Datos_Matriz(n);
cout<<"Matriz original: "<<endl;
Impresion(n);
cout<<"Ordenamiento por Inserccion: "<<endl;
Inserccion(n);
system("PAUSE");
return 0;
}

Similitudes:
Estos nuevos algoritmos que hemos investigado se asemejan a los
tradicionales en 2 puntos muy sobresalientes, el primero es que
toman la posicin de un arreglo, haciendo que esta se compare con
las dems, el segundo punto sera que a travs de numerosas
comparaciones, los nmeros se intercambian por medio de una
variable auxiliar.

Mtodos de Ordenamiento

También podría gustarte