/** Cria novas instâncias da tabela */
public Tabela() {
}
//(1) preenche uma tabela
public static void preenche(int tabela[]) {
Random random = new Random();
for (int i=0; i < tabela.length; i++)
tabela[i] = random.nextInt(10);
}
//(2) troca as posições de dois elementos da tabela
public static void troca(String tabela[], String x, String y){
String tmp;
tmp = tabela[x];
tabela[x] = tabela[y];
tabela[y] = tmp;
}
//(3) Imprime a tabela desordenada
public static void imprime(int tabela[]) {
System.out.println("TABELA DESORDENADA");
for (int i=0; i < tabela.length; i++)
System.out.println(" "+i+": "+ tabela[i]+" ; ");
System.out.println();
}
//(4) Imprime a tabela já ordenada
public static void imprimeOrdenada(int tabela[]) {
System.out.println("TABELA ORDENADA");
for (int i=0; i < tabela.length; i++)
System.out.println(" "+i+": "+ tabela[i]+" ; ");
System.out.println();
}
}
/*
* OrdenacaoShell.java
*
* Created on 1 de Junho de 2006, 11:11
*
* To change this template, choose Tools | Options and locate the template under
* the Source Creation and Management node. Right-click the template and choose
* Open. You can then make changes to the template in the Source Editor.
*/
package javaapplication2;
/**
*
* @author FABRICIO MACHADO DA SILVA
*/
import javax.swing.JOptionPane;
public class OrdenacaoShell extends Tabela {
public static void shell (String tabela[ ], double passos ) {
boolean nenhumaTroca;
int intervalo;
int r=0;
String temp;
temp = new String();
intervalo = (int) Math.pow(2,passos);
do
{
do
{
nenhumaTroca = true;
for (int j = 0; j < tabela.length-intervalo; j++)
r = tabela[j].compareTo(tabela[j+intervalo]);
System.out.println(r);
if (r==1) {
temp=tabela[j];/*AQUI TA DANDO PAU NAUM SEI COMO FAZER TROCAS DE POSIÇÔES DE STRINGS*/
nenhumaTroca = false;
}
} while (!nenhumaTroca);
intervalo = intervalo / 2;
if (intervalo >0){
Tabela.imprime(tabela);
}
} while ( intervalo > 0);
}
public static void main(String args[]){
String[] tabela;
double numerodepasso;
String retorno;
String nrpasso;
tabela = new String[12];
for(int i=0; i<tabela.length; i++){
retorno = JOptionPane.showInputDialog("Digite o valor: ");
tabela[i] = retorno;
}
nrpasso = JOptionPane.showInputDialog("Digite em quantos passos você desejar realizar a ordenação: ");
numerodepasso = Double.parseDouble(nrpasso);
Tabela.imprime(tabela); //imprime tabela antes da ordenação
shell(tabela, numerodepasso); //ordena tabela
Tabela.imprimeOrdenada(tabela); //imprime a tabela depois da ordenação
}
}
Socorro por favor
F
Seguinte tenho que fazer um algoritmo em java que receba strings ou numeros e guarde em um vetor com tamanho pre-estabelecido, depois peça ao usuário com quantos passos ele quer ordenar e aplique o algoritmo de shell sort. Fiz isso só recebendo numero beleza bombou 100%, porém não to conseguindo é fazer com que ele receba tanto nomes(strings) como numeros(inteiros), derepente é só alguma classe ou declaração sei lá deem uma olhada vejam se podem me ajudar abaixo segue a classe tabela que implementa os metodos de ordenar e imprimir ea classe ordena que faz a aplicação do algoritmo e tem a função main
Abraços
[size="11"][color="red"]* Editado: Lembre-se de utilizar BBCode em seus códigos - Ratinho[/color][/size] :joia:
1 Resposta
A
Você pode comparar a primeira letra das strings. Java ao fazer este tipo de comparação pega o código ASCII para saber se uma letra é “maior” que a outra.
Eu acho que por ai você resolve…
Criado 21 de junho de 2006
Ultima resposta 22 de jun. de 2006
Respostas 1
Participantes 2