Ordenação de uma matriz insertion sort

6 respostas
Felipe_Vandrilho

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 !

6 Respostas

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?

Felipe_Vandrilho

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?

cara não entendi direito ;/ , não seria mais fácil usar matriz ?

Felipe_Vandrilho

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?

é 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.

santanna106

Mas é para vc usar a matriz mesmo.

vou tentar implementar aqui e mostro o código.

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

Felipe_Vandrilho

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

Entendi a idéia da coluna fixa e da nova variável para armazenar a nova coluna. Valeuu!

Criado 24 de novembro de 2010
Ultima resposta 26 de nov. de 2010
Respostas 6
Participantes 2