Escolar Documentos
Profissional Documentos
Cultura Documentos
ALGORITMOS DE ORDENAO
Francisco Bruno alfimcz@gmail.com
Introduo
O bubble sort, ou ordenao por flutuao (literalmente "por bolha"), um algoritmo de ordenao dos mais simples, usado para ordenar arrays ou listas encadeadas. A ideia percorrer o vector diversas vezes, a cada passagem fazendo flutuar para o topo o maior elemento da sequncia. Essa movimentao lembra a forma como as bolhas em um tanque de gua procuram seu prprio nvel, e disso vem o nome do algoritmo. A complexidade desse algoritmo de Ordem quadrtica. Por isso, ele no recomendado para programas que precisem de velocidade e operem com quantidade elevada de dados.
Introduo
O algoritmo BubbleSort consiste em se percorrer o vetor a ser ordenado vrias vezes, comparando-se cada elemento com o seguinte, permutando suas posies se eles no estiverem na ordem pretendida. Assim, cada vez que o vetor percorrido, o maior elemento (ou o menor, se a ordenao for feita em ordem decrescente) ainda no ordenado, colocado na sua posio de ordenao definitiva. Naturalmente, o vetor ser percorrido at que no haja mais trocas a se fazer, quando ento ele estar ordenado. Por exemplo, se o vetor a ser ordenado em ordem crescente fosse v = {5, 1, 9, 3, 7, 2}, teramos as seguintes configuraes para v, de acordo com a ordem de percurso:
Introduo
O algoritmo pode ser descrito em pseudo-cdigo como segue abaixo. V um VECTOR de elementos que podem ser comparados e n o tamanho desse vector.
houveTroca <- verdade houveTroca <- falso # uma varivel de controle
}
} }
Observe que a varivel flag verifica se houve alguma troca para que outro percurso seja realizado. Observe tambm que o comando t := t 1 se justifica pelo fato de que no percurso de ordem i, i 1 elementos j esto em suas posies definitivas.
Identificar todos os pares de elementos contguos tais que v[i] > v[i+1] e troc-los.
Implementar junto com a turma o algoritmo sem o uso de flag. Vamos implementar um programa para usar a procedure do Slide n. 6. Para exemplificar o uso da flag. Criar um programa em Java para que dado o vector V qualquer, de nmeros inteiros (ex.: 3,5,4,1,9,6,7,2) ordene este vector utilizando o Bubble Sort e ao final informe quantas vezes o vector precisou ser percorrido para poder ordenar os nmeros.
Escreva um programa em Pascal que dado um Vector de 20 posies de um tipo definido pelo programador como abaixo: type Animal = record especie: String; nome: String;
end;
Leia de maneira desordenada at 20 animais (espcie e nome) e em seguida imprima uma relao dos animais cadastrados ordenados por espcie.