Olá amigo do GUJ sou novo no fórum(porém ja o conheço e ja sanei algumas duvidas através de alguns tópicos) e também sou novo em Java. Bom, vamos ao que interessa: Sou aluno de um curso técnico em informatica na ETEC e sexta feira meu professor nos pediu que fizessemos um trabalho sobre métodos(algoritimos) de ordenação, pois bem, eu fiquei com o Comb sort e gostaria que vocês me ajudassem a entender o que é um Comb sort e como fazê-lo. Eu compreendi que é uma forma de ordenar dados correto? Porém não entendi como isso é feito e para que é feito e como desenvolve-lo. Navegando pela internet encontrei o seguinte código:
[code]public static <E extends Comparable<? super E>> void sort(E[] input) {
int gap = input.length;
boolean swapped = true;
while (gap > 1 || swapped) {
if (gap > 1)
gap = (int) (gap / 1.247330950103979);
int i = 0;
swapped = false;
while (i + gap < input.length) {
if (input[i].compareTo(input[i + gap]) > 0) {
E t = input[i];
input[i] = input[i + gap];
input[i + gap] = t;
swapped = true;
}
i++;
}
}
}[/code]
Caso seja possivel acho que ficaria mais facil trabalharmos em cima desse código. Obrigado desde já !!!
public static <E extends Comparable<? super E>> void sort(E[] input) {
por
public static void sort(String[] input) {
...
String t = input[i];
...
você terá o mesmo código, mas especializado para trabalhar com Strings, não com um tipo qualquer E.
(Acho que é isso que está lhe deixando pinel - trabalhar com Generics é meio chatinho mesmo).
Obrigado cara =) ajudou bastante !!! Então pelo que eu compreendi: ele organiza as Strings(no caso de eu usar a alteração que você fez no código) em uma ordem pré estabelecida é isso? Essa ordem pode ser definida no código? Caso não possa qual é a ordem que ele organiza?
Velho valeu mesmo me ajudou bastante com meu trabalho !!! Uma ultima pergunta: Esse algoritimo é padrão, o que pode ser mudado é apenas os tipo de dados que iremos trabalhar, é isso?
Esse código é genérico, mas para usar com tipos primitivos, em vez de compare, você pode usar o operador correspondente > ou < .
Deixo isso como exercício. Eu sei que você deve ser inteligente, porque está em uma ETEC e pelo menos no meu tempo não era trivial passar no vestibulinho das ETECs.