Socorro por favor

1 resposta
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
/** 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
        
    }
 }
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