Ordenamiento por Conteo

Es la optimización del Método Ordenamiento por Burbujas; Igual que el método anterior, la información se intercambia entre un elemento (burbuja) y el siguiente elemento contiguo. Requiriéndose de esta manera que cada burbuja se compare con las demás burbujas del mismo grupo. Salvo que en este nuevo enfoque, se cuenta el número de veces que cada burbuja es mayor que todas las demás burbujas del Universo. Esto se debe a que es más rápido efectuar una suma, que efectuar tres asignaciones de valores.

Diagrama de Flujo que explica el Ordenamiento por Conteo

El Ordenamiento se efectua de la sig. forma
Valores Iniciales: n = 6 i = 1 . . . n - 1, j = i + 1 . . . n
c = {0, 0, 0, 0, 0, 0}, s = {0, 0, 0, 0, 0, 0}

Para i = 1, j = 2; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? Sí Sumar 1 a c(j) c = {0, 1, 0, 0, 0, 0}

Para i = 1, j = 3; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? Sí Sumar 1 a c(j) c = {0, 1, 1, 0, 0, 0}

Para i = 1, j = 4; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? Sí Sumar 1 a c(j) c = {0, 1, 1, 1, 0, 0}

Para i = 1, j = 5; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? No Sumar 1 a c(i) c = {1, 1, 1, 1, 0, 0}

Para i = 1, j = 6; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? No Sumar 1 a c(i) c = {2, 1, 1, 1, 0, 0}


Para i = 2, j = 3; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? No Sumar 1 a c(i) c = {2, 2, 1, 1, 0, 0}

Para i = 2, j = 4; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? No Sumar 1 a c(i) c = {2, 3, 1, 1, 0, 0}

Para i = 2, j = 5; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? No Sumar 1 a c(i) c = {2, 4, 1, 1, 0, 0}

Para i = 2, j = 6; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? No Sumar 1 a c(i) c = {2, 5, 1, 1, 0, 0}


Para i = 3, j = 4; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? No Sumar 1 a c(i) c = {2, 5, 2, 1, 0, 0}

Para i = 3, j = 5; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? No Sumar 1 a c(i) c = {2, 5, 3, 1, 0, 0}

Para i = 3, j = 6; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? No Sumar 1 a c(i) c = {2, 5, 4, 1, 0, 0}


Para i = 4, j = 5; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? No Sumar 1 a c(i) c = {2, 5, 4, 2, 0, 0}

Para i = 4, j = 6; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? No Sumar 1 a c(i) c = {2, 5, 4, 3, 0, 0}


Para i = 5, j = 6; x = {3, 21, 9, 8, 2, 1}
¿Es x(i) < x(j)? No Sumar 1 a c(i) c = {2, 5, 4, 3, 1, 0}

Ahora se colocarán los valores del conjunto X, en base a las posiciones indicadas en los contadores C, en el conjunto S:
Para i = 1; c = {2, 5, 4, 3, 1, 0}, x = {3, 21, 9, 8, 2, 1}
s( c(i)+1 ) = x(i) s = {0, 0, 3, 0, 0, 0}

Para i = 2; c = {2, 5, 4, 3, 1, 0}, x = {3, 21, 9, 8, 2, 1}
s( c(i)+1 ) = x(i) s = {0, 0, 3, 0, 0, 21}

Para i = 3; c = {2, 5, 4, 3, 1, 0}, x = {3, 21, 9, 8, 2, 1}
s( c(i)+1 ) = x(i) s = {0, 0, 3, 0, 9, 21}

Para i = 4; c = {2, 5, 4, 3, 1, 0}, x = {3, 21, 9, 8, 2, 1}
s( c(i)+1 ) = x(i) s = {0, 0, 3, 8, 9, 21}

Para i = 5; c = {2, 5, 4, 3, 1, 0}, x = {3, 21, 9, 8, 2, 1}
s( c(i)+1 ) = x(i) s = {0, 2, 3, 8, 9, 21}

Para i = 6; c = {2, 5, 4, 3, 1, 0}, x = {3, 21, 9, 8, 2, 1}
s( c(i)+1 ) = x(i) s = {1, 2, 3, 8, 9, 21}