Oi galera, estou precisando de ajuda em um trabalho de faculdade quero ordenar uma matriz usando Insertion sort.
onde cada coluna fica uma palavra de língua diferente (português / inglês). O usuário vai escolher como quer ordenar,
minha dúvida é como ordenar usando uma matriz.
ex: String [][] dicionario = { {“cachorro”,“dog”}, {“gato”, “cat”}, … };
eu já implementei a ordenação de vetor.
public static void main(String[] args) {
String []vetor={"zelda","zen","a","d"};
insertionSort(vetor);
}
public static void insertionSort(String []array){
for (int i = 1; i < array.length; i++) {
String a = array[i];
for (int j = i - 1; j >= 0 && array[j].compareToIgnoreCase(a) > 0; j--){
array[j + 1] = array[j];
array[j] = a;
}
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
por favor me ajudem !
Velho,
Considerando que vc só vai ordenar em um dos idiomas em cada operação de ordenação.
vc pode adaptar o algoritmo considerando que cada coluna é um vetor. Porém, no momento da troca vc vai ter que realizar a troca para as duas colunas.
entendeu a idéia?
[quote=santanna106]Velho,
Considerando que vc só vai ordenar em um dos idiomas em cada operação de ordenação.
vc pode adaptar o algoritmo considerando que cada coluna é um vetor. Porém, no momento da troca vc vai ter que realizar a troca para as duas colunas.
entendeu a idéia?
[/quote]
cara não entendi direito ;/ , não seria mais fácil usar matriz ?
[quote=santanna106]Velho,
Considerando que vc só vai ordenar em um dos idiomas em cada operação de ordenação.
vc pode adaptar o algoritmo considerando que cada coluna é um vetor. Porém, no momento da troca vc vai ter que realizar a troca para as duas colunas.
entendeu a idéia?
[/quote]
é porque o usuário que vai escolher como ordenar se é por inglês ou português, isso que tá me complicando. E vai ter que mostrar a respectiva tradução.
Mas é para vc usar a matriz mesmo.
vou tentar implementar aqui e mostro o código.
Velho,
veja se agora a idéia ficou mais clara
public static void insertionSort(String[][] array) {
for (int i = 1; i < array.length; i++) {
String a = array[i][1];
String b = array[i][0];
for (int j = i - 1; j >= 0 && array[j][1].compareToIgnoreCase(a) > 0; j--) {
array[j + 1][1] = array[j][1];
array[j + 1][0] = array[j][0];
array[j][1] = a;
array[j][0] = b;
}
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i][0] + " " + array[i][1]);
}
}
neste caso eu fixei que a coluna a ser ordenada será a 1 ou seja a que contém palavras em inglês. Mas, vc pode adaptar o método para variar na ordenação.
eu não testei o código. Simplismente peguei o seu e adaptei.
Observer que eu criei a strig b para armazenar o valor da outra coluna e realizar a troca
[quote=santanna106]Velho,
veja se agora a idéia ficou mais clara
public static void insertionSort(String[][] array) {
for (int i = 1; i < array.length; i++) {
String a = array[i][1];
String b = array[i][0];
for (int j = i - 1; j >= 0 && array[j][1].compareToIgnoreCase(a) > 0; j--) {
array[j + 1][1] = array[j][1];
array[j + 1][0] = array[j][0];
array[j][1] = a;
array[j][0] = b;
}
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i][0] + " " + array[i][1]);
}
}
neste caso eu fixei que a coluna a ser ordenada será a 1 ou seja a que contém palavras em inglês. Mas, vc pode adaptar o método para variar na ordenação.
eu não testei o código. Simplismente peguei o seu e adaptei.
Observer que eu criei a strig b para armazenar o valor da outra coluna e realizar a troca[/quote]
Entendi a idéia da coluna fixa e da nova variável para armazenar a nova coluna. Valeuu!