Counting Sort
Counting Sort
BASTIDAS DE APURIMAC
ESCUELA PROFESIONAL
DE INGENIERIA
DE INFORMATICA Y SISTEMAS
ASIGNATURA: Algorítmica ll
INTEGRANTES:
Este trabajo es dedicado
a mi grupo por esforzarse ,poner
empeño en este proyecto.
INDICE
1. Introducción……………………………………Pag. 4
2. Historia………………………………………….Pag. 5
3. Marco Teórico…………………………………Pag. 5
5. Pseudocódigo………………………………………...pag6
6.codigo en c++………………………………………….pag7
7.bibliografia.- …………………………………...............Pag. 9
METODO DE ORDENAMIENTO POR CUENTAS
(COUNTING SORT)
Introducción:
El algoritmo de ordenamiento Counting Sort (Ordenamiento por Cuentas en
español) es un algoritmo de ordenamiento en el que se cuenta el número de
elementos de cada clase para luego ordenarlos. Sólo puede ser utilizado por tanto
para ordenar elementos que sean contables, por ejemplo, los números enteros de
un determinado intervalo, sin contar números reales.El algoritmo fue creado por
Harold H. Seward en 1954.
El algoritmo es muy interesante por que no necesita ningún uso de una condición
a excepción de los bucles, tiene un mejor funcionamiento con una lista larga, de
un solo elemento simple (no hay estructuras),y de números repetitivos .
Es mejor que los numero no se separen entre si ,un ejemplo seria el valor máximo
sea de 15 y el mínimo de uno, aunque tengamos 10mil entradas (o elementos), la
desventaja de este algoritmo es la necesidad de almacenar muchos datos de
memoria.
Tipos de ordenamientos:
Los 2 tipos de ordenamientos que se pueden realizar son: los internos y los
Externos.
-Los internos:
Son aquellos en los que los valores a ordenar están en memoria principal,
por lo que se asume que el tiempo que se requiere para acceder cualquier
elemento sea el mismo (a[1], a[300], etc.).
-Los externos:
Son aquellos en los que los valores a ordenar están en memoria secundaria
(disco, cinta, cilindro magnético, etc.), por lo que se asume que el tiempo
que se requiere para acceder a cualquier elemento depende de la última
posición accesada (posición 1, posición 300, etc.).
Counting sort:
1: Análisis.-
Paso 1: consiste en averiguar cuál es el intervalo en que se encuentran los datos
a ordenar valores mínimo y máximo.
Paso 2: luego creamos un vector de números enteros tantos como valores haya
en el intervalo (mínimo, máximo) y cada elemento se le da un valor de cero (0).
Paso 3: tras esto se recorren todos los elementos a ordenar y se cuenta el número
de apariciones de cada elemento (usando el vector que hemos creado).
Paso 4: por ultimo basta con recorrer este vector para tener todos los elementos
ordenados.
-consideremos el siguiente ejemplo:
Lista a ordenar: 2 5 3 2 8 5 3 2
1.-buscar el mínimo y el máximo:
Mínimo=2
Máximo=8
Lista ordenada = 2 ,2 ,2 ,3 ,3 ,5 ,5 ,8
VENTAJAS:
-El algoritmo tiene una complejidad de O(N+k), siendo “n” el número de elementos
a ordenar y “k” el tamaño del vector auxiliar (Max-min).
-La eficiencia del algoritmo esta entre el mejor y peor caso.
DESVENTAJAS:
-El algoritmo como y ya sabemos no requiere de un condicional (if), pero requiere
de una memoria adicional .
- lento.
-solo ordena números enteros.
-mayormente se usa en arreglos en los q los números se repiten.
2.-Pseudocódigo:
Inicio
Variables(A[15],B[15 ],C[100],j,k,n,i)
//ingresamos la dimensión
leer dimension:n
Hacer para i=1 hasta n
Leer A[i]
si(A[i] > k)
k = A[i];
finsi
me=A[i]
finhacer
hacer para i=1 hasta n
si(me>A[i])
me=A[i];
finsi
finhacer
hacer para i=me hasta k
C[i]=0
finhacer
3.código en c++
#include <iostream>
#include <conio.h>
using namespace std;
main()
{
int n,k = 0, A[15],me,total;
int i, j;
int B[15], C[100];
cout << "ingrese la cantidad d elementos : ";
cin >> n;
cout << "\ningrese los elementos :\n";
for ( int i = 1; i <= n; i++)
{
cin >> A[i];
if(A[i] > k)
{
k = A[i];
}
me=A[i];
}
for ( int i = 1; i <= n; i++)
{
if(me>A[i])
{
me=A[i];
}
}
for(i = me; i <= k; i++)
C[i] = 0;
for(j =1; j<=n; j++)
{C[A[j]] = C[A[j]] + 1;}
Bibliografía:
BIBLIOGRAFIA
http://es.wikipedia.org/wiki/Algoritmo_de_ordenamiento
http://books.google.com.co/books?id=NLngYyWFl_YC&pg=PA168&lpg=PA168&d
q=counting+sort+cormen&source=bl&ots=BwVsEE-
http://www.ritmodominicano.com/wiki.php?title=Discusi%C3%B3n:Algoritmo_de_or
denamiento