Olá, bom dia a todos.
Sou novo aqui no GUJ e também no Java.
Estou há quase 2 semanas tentando finalizar um código para trabalho acadêmico, assim sendo tenho 2 dúvidas quanto ao código que implementei, através de algoritmos de livros específicos. Bom vamos lá. A primeira é a comparação de String com um vetor int[]. Eu sei que é meio absurdo, mas nos algoritmos de Quick e Selection Sort eu precisava escolher um dos três atributos (String nome, int matricula, int curso) e ordernar por esses 2 métodos de classificação de dados. A matricula e curso por serem int eu consegui, porém o String nome, não consegue. Eu sei que é meio primário isso, mas to começando há pouco tempo no Java e na área de programação, já procurei em fóruns, e achei o equals (mas compara 2 Strings e eu só tenho 1) e o compareTo, que não me ajudaram. Existe outro método que poderia “amenizar o absurdo” da comparação int/string?
[code]import java.io.;
import java.util.;
public class TabelaTrabalho {
int[] matricula = {12345, 24567, 456789, 12345, 24567, 456789, 12345, 24567, 456789, 67890, 456783 };
int[] curso = {1,2,3,4,5,6,7 ,8, 9, 10, 11};
String[] nome = {“João”, “Maria”, “Fernando”, “José”, “Pedro”, “Carlos”, “Tiago”, “Mário”, “Carla”, “Leandro”, “Raul” };
private int numElementos;
private int tab[];
public TabelaTrabalho(int numElementos, int[] tab) {
this.numElementos = numElementos;
this.tab = tab;
}
public void exibeTabela(){
System.out.println("Tabela: ");
for(int i=0; i < numElementos; i++)
System.out.println(" " + tab[i]);
System.out.println();
}
public void SelectionSort(){
//variáveis
int chave[] = null;
int endereco[] = null;
int i,j,min,ch;
for(i =0; i < numElementos; i++){
min = i;
for(j = i+1; j < numElementos; j++){
if(chave[j] < chave[min]){
min = j;
ch = chave[i];
chave[i] = chave[min];
chave[min] = ch;
matricula[i] = endereco[i];
endereco[i] = endereco[min];
endereco[min] = matricula[i];
}
}
}
}
public void SelectionSort2(){
//variáveis
int chave[] = null;
int endereco[] = null;
int i,j,min,ch;
for(i =0; i < numElementos; i++){
min = i;
for(j = i+1; j < numElementos; j++){
if(chave[j] < chave[min]){
min = j;
ch = chave[i];
chave[i] = chave[min];
chave[min] = ch;
curso[i] = endereco[i];
endereco[i] = endereco[min];
endereco[min] = curso[i];
}
}
}
}
public void SelectionSort3(){
//variáveis
int chave[] = null;
int endereco[] = null;
int i,j,min,ch;
for(i =0; i < numElementos; i++){
min = i;
for(j = i+1; j < numElementos; j++){
if(chave[j] < chave[min]){
min = j;
ch = chave[i];
chave[i] = chave[min];
chave[min] = ch;
// nome[i] = endereco[i];
endereco[i] = endereco[min];
//endereco[min] = nome[i];
}
}
}
}
public void QuickSort(){
sort(0, this.numElementos -1);
}
private void sort(int esquerda, int direita) {
int posEsqAux;
int posDirAux;
int pivo;
int vetor[] = null;
posEsqAux = esquerda;
posDirAux = direita;
pivo = tab[(esquerda + direita)/2];
while(posEsqAux <= posDirAux){
while(tab[posEsqAux] < pivo){
posEsqAux = posEsqAux + 1;
while(tab[posDirAux] > pivo){
posDirAux = posDirAux + 1;
if(posEsqAux <= posDirAux){
vetor[posEsqAux] = tab[posEsqAux];
vetor[posEsqAux] = tab[posEsqAux];
vetor[posEsqAux] = tab[posEsqAux];
tab[posEsqAux] = tab[posDirAux];
tab[posDirAux] = vetor[posDirAux];
tab[posDirAux] = vetor[posDirAux];
tab[posDirAux] = vetor[posDirAux];
posEsqAux = posEsqAux + 1;
posDirAux = posDirAux - 1;
}
}
if(esquerda < direita){
sort(esquerda, posDirAux);
}
if(direita > posEsqAux){
sort(posEsqAux, direita);
}
}
}
}
public void QuickSort2(){
sort2(0, this.numElementos -1);
}
private void sort2(int esquerda, int direita) {
int posEsqAux;
int posDirAux;
int pivo;
int vetor[] = null;
posEsqAux = esquerda;
posDirAux = direita;
pivo = tab[(esquerda + direita)/2];
while(posEsqAux <= posDirAux){
while(tab[posEsqAux] < pivo){
posEsqAux = posEsqAux + 1;
while(tab[posDirAux] > pivo){
posDirAux = posDirAux + 1;
if(posEsqAux <= posDirAux){
vetor[posEsqAux] = tab[posEsqAux];
vetor[posEsqAux] = tab[posEsqAux];
vetor[posEsqAux] = tab[posEsqAux];
tab[posEsqAux] = tab[posDirAux];
tab[posDirAux] = vetor[posDirAux];
tab[posDirAux] = vetor[posDirAux];
tab[posDirAux] = vetor[posDirAux];
posEsqAux = posEsqAux + 1;
posDirAux = posDirAux - 1;
}
}
if(esquerda < direita){
sort(esquerda, posDirAux);
}
if(direita > posEsqAux){
sort(posEsqAux, direita);
}
}
}
}
public void QuickSort3(){
sort3(0, this.numElementos -1);
}
private void sort3(int esquerda, int direita) {
int posEsqAux;
int posDirAux;
int pivo;
int vetor[] = null;
posEsqAux = esquerda;
posDirAux = direita;
pivo = tab[(esquerda + direita)/2];
while(posEsqAux <= posDirAux){
while(tab[posEsqAux] < pivo){
posEsqAux = posEsqAux + 1;
while(tab[posDirAux] > pivo){
posDirAux = posDirAux + 1;
if(posEsqAux <= posDirAux){
vetor[posEsqAux] = tab[posEsqAux];
vetor[posEsqAux] = tab[posEsqAux];
vetor[posEsqAux] = tab[posEsqAux];
tab[posEsqAux] = tab[posDirAux];
tab[posDirAux] = vetor[posDirAux];
tab[posDirAux] = vetor[posDirAux];
tab[posDirAux] = vetor[posDirAux];
posEsqAux = posEsqAux + 1;
posDirAux = posDirAux - 1;
}
}
if(esquerda < direita){
sort(esquerda, posDirAux);
}
if(direita > posEsqAux){
sort(posEsqAux, direita);
}
}
}
}
}
[/code]

