METODOS DE ORDENAMIENTO
Debido a que las estructuras de datos son utilizadas para almacenar informacin, para poder
recuperar esa informacin de manera eficiente es deseable que aquella est ordenada. Existen
varios mtodos para ordenar las diferentes estructuras de datos bsicas.
En general los mtodos de ordenamiento no son utilizados con frecuencia, en algunos casos
slo una vez. Hay mtodos muy simples de implementar que son tiles en los casos en dnde
el nmero de elementos a ordenar no es muy grande (ej, menos de 500 elementos). Por otro
lado hay mtodos sofisticados, ms difciles de implementar pero que son ms eficientes en
cuestin de tiempo de ejecucin.
Los mtodos sencillos por lo general requieren de aproximadamente n x n pasos para ordenar
n elementos.
Los mtodos simples son: insertion sort (o por insercin directa) selection sort, bubble sort, y
shellsort, en dnde el ltimo es una extensn al insertion sort, siendo ms rpido. Los mtodos
ms complejos son el quick-sort, el heap sort, radix y address-calculation sort. El ordenar un
grupo de datos significa mover los datos o sus referencias para que queden en una secuencia
tal que represente un orden, el cual puede ser numrico, alfabtico o incluso alfanumrico,
ascendente o descendente.
Se ha dicho que el ordenamiento puede efectuarse moviendo los registros con las claves. El
mover un registo completo implica un costo, el cual se incrementa conforme sea mayor el
tamao del registro. Es por ello que es deseable evitar al mximo el movimiento de los
registros. Una alternativa es el crear una tabla de referencias a los registros y mover las
referencias y no los datos. A continuacin se mostrarn los mtodos de ordenamiento
empezando por el ms sencillo y avanzando hacia los mas sofisticados
ORDENAMIENTO DE BURBUJA
#include<stdio.h>
int main ()
{
int aux,i,j,k;
int n=10,A[n];
}
for (k=0;k<n;k++)
{
printf(" %d",A[k]);
}
return 0;
}
ORDENAMIENTO SHELL
#include <iostream>
using namespace std;
void shell(int array[], int size)
{
El ordenamiento por insercin (insertion sort en ingls) es una manera muy natural de ordenar
para un ser humano, y puede usarse fcilmente para ordenar un mazo de cartas numeradas en
forma arbitraria. Requiere O(n) operaciones para ordenar una lista de n elementos.
#include<stdio.h>
#include<conio.h>
int a[4]={4,1,7,2};
int n=4;
int i,j,x;
main()
{
for(i=1;i<n;i++)
{
j=i;
x=a;
while(j>0 && x<a[j-1])
{
a[j]=a[j-1];
j--;
}
a[j]=x;
}
for(i=0;i<4;i++)
{
printf("%d",a);
}
getch();
}
#include<iostream>
using namespace std;
#define largo 50
void seleccionsort (int A[], int n)
{
int min,i,j,aux;
for (i=0; i<n-1; i++)
{
min=i;
for(j=i+1; j<n; j++)
if(A[min] > A[j])
min=j;
aux=A[min];
A[min]=A[i];
A[i]=aux ;
}
}
void main ()
{
int A[largo],n;
do{
cout<<"Cantidad de numeros a ingresar: ";cin>>n;
if(n<=0||n>largo)
cout<<"Debe ingresar un valor > a 0 y < a
"<<largo<<endl;
}while(n<=0||n>largo);
leeCadena(n,A);
seleccionsort(A,n);
muestraCadena(n,A);
}
#include<iostream>
using namespace std;
void leeCadena(int cant,int n[])
{
int i;
for(i=0;i<cant;i++)
{
cout<<"Ingresa numero "<<i+1<<": ";
cin>>n[i];
}
#include <iostream>
#define max 100
using namespace std;
int main()
{
int A[max],j,item,temp,i,k,n;
cout<<"Ingresa la cantidad de elementos del arreglo: ";
cin>>n;
for(i=1;i<=n;i++)
cin >> A[i];
for(k=n;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<<"El orden es:"<<endl;
for(i=1;i<=n;i++)
cout<<A[i] << endl;
return 0;
}
MATRICES
Ejemplo 1
#include <iostream>
using namespace std;
const int MaxDimensiones = 2;
int main()
{
int v[][MaxDimensiones] = { 1, 2, 3, 4 };
for(int i = 0; i < MaxDimensiones; ++i) {
for(int j = 0; j < MaxDimensiones; ++j) {
cout << v[ i ][ j ] << endl;
}
}
return 0;
}
Ejemplo 2
Hacer un programa en lenguaje c que imprima la suma de cada una de las columnas de una
matriz 5x5
#include <stdio.h>
#define n 3
int main ()
{
int matriz[n][n],i,j,suma =0;
printf("introduzca los valores");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&matriz [i][j]);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
suma =suma + matriz[j][i];
printf("%d",suma);
suma=0;
i=0;
j=j+1;
}
Ejemplo 3
Matriz de nxn
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
int main()
{
int A[50][50];
int i,j,m,n;
system("PAUSE>nul");
return 0;
}
Ejemplo 4
Matriz de 3x3
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
main()
{
int i1,i2;
int a=30,b=40;
int monto[3][2]={{1,4,5,},{45,33,66}};
for (i1=0 ; i1<2 ; i1++)
for (i2=0 ; i2<3 ; i2++)
{
cout<<C[i][j]<<endl;
}
}
}