Post on 04-Aug-2015
Componentes:
Componentes Fernanda casais
Janine
Algoritmo similiar ao Insertion sort com a diferença que o Gnome sort leva um elemento para sua posição correta, com uma seqüencia grande de trocas assim como o Bubble sort. O algoritmo percorre o vetor comparando seus elementos dois a dois, assim que ele encontra um elemento que está na posição incorreta, ou seja, um número maior antes de um menor, ele troca a posição dos elementos, e volta com este elemento até que encontre o seu respectivo lugar.
public void gnomeSort() { int i = 1, troca = 0; while(i < v.length) { if (i == 0 || v [i-1] <= v [i]) i++; else { troca = v [i - 1]; v[i - 1] = v[i]; v[i] = troca; i --; } }
}
Exemplo:
12
9
7
6
4
9
7
6
4
12
7
6
4
9
12
6
4
7
9
12
4
6
7
9
12
O nº 12 é maior e está antes do nº 9 , então foi feita a troca de posições dos elementos e o algoritmo volta com o 12 fazendo a comparação dos elementos dois a dois e inserindo-o no lugar certo, como mostra a figura.
Após iniciamos a comparação do 7 com o 6 , trocamos as posições e o algoritmo volta com o 7 até inseri-lo na posição correta, deste maneira todos os elementos serão ordenados corretamente, como mostra a última tabela.