Algoritmia - Ordenacion de vectores por Radix y por cubetas

 
Vista:

Ordenacion de vectores por Radix y por cubetas

Publicado por Miguel (4 intervenciones) el 11/02/2002 09:09:42
Pues eso. Alguien me puede ayudar con esos métodos de ordenación, o enviarme el código fuente?. Es la primera vez que los oigo y no tengo ni idea. Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Ordenación por Radix y por cubetas: Pseudocódigos y explicación

Publicado por Alejandro (307 intervenciones) el 27/02/2024 23:19:46
Claro, puedo proporcionarte una breve explicación de los algoritmos de ordenación por Radix y por cubetas, así como pseudocódigos básicos para cada uno de ellos. Ten en cuenta que estos algoritmos pueden tener múltiples variantes y detalles específicos según la implementación y el lenguaje de programación.

Ordenación por Radix:



La ordenación por Radix es un algoritmo de ordenación que trabaja dividiendo los elementos en dígitos individuales y ordenándolos en cada paso.

Pseudocódigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Procedimiento ordenacionRadix(vector A):
    máximo := encontrarMaximo(A)
    exp := 1
 
    Mientras (máximo / exp) > 0
        contarSort(A, exp)
        exp *= 10
    Fin Mientras
Fin Procedimiento
 
Procedimiento contarSort(vector A, exp):
    n := longitud(A)
    salida := vector de tamaño n
    contar := vector de tamaño 10 con todos los elementos inicializados a 0
 
    Para i desde 0 hasta n-1
        contar[(A / exp) % 10]++
    Fin Para
 
    Para i desde 1 hasta 9
        contar[i] += contar[i-1]
    Fin Para
 
    Para i desde n-1 hasta 0
        salida[contar[(A[i] / exp) % 10] - 1] = A[i]
        contar[(A[i] / exp) % 10]--
    Fin Para
 
    Para i desde 0 hasta n-1
        A[i] = salida[i]
    Fin Para
Fin Procedimiento

Ordenación por cubetas:



La ordenación por cubetas ([i]Bucket sort
) divide el rango de valores en intervalos y distribuye los elementos en cubetas según su valor.

Pseudocódigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Procedimiento ordenacionPorCubetas(vector A):
    n := longitud(A)
    cubetas := inicializarCubetas()
    salida := []
 
    Para i desde 0 hasta n-1
        índice := calcularIndice(A[i])
        insertarEnCubeta(cubetas, índice, A[i])
    Fin Para
 
    Para cada cubeta en cubetas
        ordenarCubeta(cubeta)
        agregarCubetaASalida(cubeta, salida)
    Fin Para
 
    A := salida
Fin Procedimiento
 
Función calcularIndice(valor):
    // Calcular el índice de la cubeta basado en el valor del elemento
    // Puede ser una función simple, como dividir por el tamaño de cada cubeta
    Devolver índice
Fin Función
 
Procedimiento insertarEnCubeta(cubetas, índice, valor):
    // Insertar el valor en la cubeta correspondiente
Fin Procedimiento
 
Procedimiento ordenarCubeta(cubeta):
    // Aplicar un algoritmo de ordenación a la cubeta (puede ser cualquier otro algoritmo)
Fin Procedimiento
 
Procedimiento agregarCubetaASalida(cubeta, salida):
    // Agregar los elementos de la cubeta a la salida
Fin Procedimiento

Estos son pseudocódigos básicos y es posible que necesiten ajustes según el lenguaje de programación específico y los detalles de implementación. ¡Espero que te resulten útiles, Miguel!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar