sort/doc/pseudo/bitonicsort.txt

126 lines
2.1 KiB
Plaintext

entrada: array: arreglo de n datos: n: tamaño del arreglo
salida: arreglo ordenado
funcion potencia_de_dos(inicio n)
si(n = 0) entonces
retornar 0
fin si
mientras(n distinto 1) hacer
si (n % 2 distinto 0) hacer
retornar 0
fin si
fin mientras
retornar 1
fin funcion
inicio funcion mejor_potencia_de_2_menos_a_n(inicio n)
inicio k = 1
mientras(k > 0 y k < n) hacer
busca el numero potencia de dos mas proximo hacia abajo en n
fin mientras
retorna k
fin funcion
funcion comparar(inicio i, inicio j, inicio dir, inicio arreglo)
temp = array[i];
array[i] = array[j];
array[j] = temp;
fin funcion
funcion unionbitonica(inicio low, inicio n, inicio dir, inicio arreglo)
inicio i
inicio k
si(n > 1) entonces
k = n/2
para i = low hasta i < low + k con paso i = i+1
comparar(, i + k, di, arreglo)
fin para
unionbitonica(low, k, dir, arreglo)
unionbitonica(low + k, k, dir, arreglo)
fin si
fin funcion
funcion unionbitonico2(inicio low, inicio n, inicio dir, inicio arreglo)
inicio i
inicio k
si(n > 1) entonces
k = mejor_potencia_de_2_menos_a_n
para i = low hasta i < low + n - k con paso i = i + 1 hacer
comparar(i, i + k, dir, arreglo)
fin para
ordenamientobitonico2(low, k, dir, arreglo)
ordenamientobitonico2(low + k, n - k, dir, arreglo)
fin funcion
funcion recorrerbitonico(int low, int n, int dir, int arreglo)
inicio k
si(n > 1) entonces
k = n / 2
recorrerbitonico(low, k, 1, arreglo)
recorrerbitonico(low + k, k, 0, arreglo)
unionbitonica(low, n, dir, array)
fin si
fin funcion
funcion recorrerbitonico2(int low, int n, int dir, int arreglo)
inicio k
si(n > 1) entonces
k = n / 2
recorrerbitonico2(low, k, !di, arreglo)
recorrerbitonico2(low + k, n - k, dir, arreglo)
unionbitonico2(low, n, dir, arreglo)
fin si
fin funcion
funcion orden(int arreglo, int n, int dir)
si(potencia_de_dos(n)) entonces
recorrerbitonico(0,n,dir,arreglo)
fin si
sino
recorrerbitonico2(0, n, dir, arreglo)
fin sino
fin funcion
funcion ordenamientobitonico(inicio arreglo, inicio n)
orden(arreglo, n, 1)
fin funcion