You are on page 1of 3

Bitonic Sort

Implementao, anlise e testes


Prof. Dr. Jess P. Mena-Chalco
Universidade Federal do ABC, Centro de Matemtica, Computao e Cognio (CMCC)
jesus.mena@ufabc.edu.br

Anderson Chaves Faria


anderson.faria@aluno.ufabc.edu.br, 11053613.
Leonardo Nascimento
nascimento.leonardo@aluno.ufabc.edu.br, 11051613.

AbstractThis work targets the implementation of the Bitonic Sort algorithm in the C language. The main goal is
to understand how bitonic sort works and analyse the results of tests.

Keywords: Bitonic Sort, Sorting, Algorithm.

Introduo:

O Bitonic Sort um tipo especial de algoritmo de ordenao, onde a sequncia de comparaes


no depende dos valores de um elemento. Foi idealizado em 1968 por Ken Batcher, professor emrito
de Cincia da Computao na Kent State University.

O algoritmo consiste em ( log()2 ) comparadores, utiliza a estratgia de diviso e


conquista, e possui uma estrutura conveniente para o uso de paralelismo.

Uma das limitaes desse algoritmo que que o comprimento do vetor a ser ordenado deve
ser uma potncia de 2.

Objetivo Geral:

Compreender, implementar e testar o algoritmo Bitonic Sort.

Objetivos Especificos:

Analisar o tempo de execuo para diferentes classes de vetores de entrada.

Justificativa:

Compreender o que torna o Bitonic Sort um algoritmo to especial e em quais casos ele poderia
ser usado para obter resultados melhores ou em menor tempo do que outros algoritmos j estudados.
Metodologia de Projeto ou de Simulao:

Baseado em um algoritmo construdo na linguagem Java, foi implementada na linguagem C


uma estrutura semelhante aos exerccios de laboratrio que executa o algoritmo Bitonic Sort.

O algoritmo foi executado uma nica vez para cada classe de vetor de entrada, e seus tempos
de execuo foram contados em segundos.

Apresentao dos Dados e Anlise dos Resultados:

Parcialmente Parcialmente
Aleatrio Crescente Decrescente
Crescente Decrescente

0,031328 0,022757 0,023185 0,026679 0,027737

Tabela 1: Tempo de execuo em segundos para cada uma das classes de vetor.

Como possvel observar, quanto mais um vetor est prximo de estar organizado, o tempo
de execuo diminui, uma vez que o nmero de trocas necessrias menor.

Concluso

Podemos dizer que o Bitonic Sort no um algoritmo timo, uma vez que ( ()) o
limite da sua classe de algoritmos.

Todavia, interessante a sua utilizao para problemas que necessitam de paralelismo, uma
vez que a sequncia de comparaes necessrias no depende do valor dos elementos do vetor, o que
faz com que, na prtica, o seu tempo de execuo possa ser inferior algoritmos mais eficientes.

Referncias Bibliogrficas

- http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/networks/sortieren.htm Sorting
Networks acessado em 05/05/2016.

- http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/bitonic/bitonicen.htm Bitonic Sort


acessado em 05/05/2016.

- http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/bitonic/oddn.htm Bitonic Sorting


network for n not a power of 2 acessado em 05/05/2016.
- https://www.youtube.com/watch?v=UzdwAyfvcfY Intro to pararell programming acessado em
05/05/2016.

- http://www.cs.utexas.edu/users/plaxton/c/337/05s/slides/ParallelRecursion-1.pdf Parallel
Recursion: Batchers Bitonic Sort acessado em 04.05.2016.