Ae Galera to precisando de uma ajuda…preciso fazer um trabalho na facul para detectar qual das quatro funções de ordenação é a mais eficiente, para isso tenho que que executar 50 vezes a ordenação em cada função e exibir a media de comparações e trocas para descobrir qual a mais eficiente…já fiz as quatro funções e já testei e sei que estao funcionando…o grande problema é que eu preciso testar o mesmo vetor quando for gerado para as quatro funções, e não estou conseguindo fazer o programa funcionar,já tentei atribuir o vetor gerado a um vetor auxiliar e não deu certo…Alguem pode me dar uma ajuda, sou iniciante em java e esse ta me tirando o sono…Segue o codigo e a classe principal…
Classe Ord
public class ord {
public int lista[];
public int lista_aux[];
public int tl=12;
public int comp;
public int troca;
public ord() {
lista=new int [tl];
}
public void insere_aleatorio(){
int i;
for(i=0;i<tl;i++){
lista[i]=(int)((Math.random()*50)+1);
}
}
public void exibe(){
int i;
for(i=0;i<tl;i++){
System.out.println("Elem= "+lista[i]);
System.out.println("Elem= "+lista_aux[i]);
}
if(!(comp==0 && troca==0)){
System.out.println("Comparacao= "+comp+"trocas="+troca);
}
}
public void bulblesort(){
int i,j,aux;
comp=0;troca=0;
for(i=1;i<tl;i++){
for(j=tl-1;j>=i;j--){
comp=comp+1;
if(lista[j-1]>lista[j]){
troca=troca+1;
aux=lista[j];
lista[j]=lista[j-1];
lista[j-1]=aux;
}
}
}
}
public void selectionsort(){
int i,j,menor, pos_menor, aux;
comp=0;troca=0;
for(i=0;i<tl;i++){
menor=lista[i];
pos_menor=i;
for(j=i+1;j<tl;j++){
comp++;
if(lista[j]<menor){
menor=lista[j];
pos_menor=j;
}
}
troca++;
aux=lista[i];
lista[i]=menor;
lista[pos_menor]=aux;
}
}
public void insertionsort(){
int i,j,aux;
comp=0;
troca=0;
for(i=1;i<tl;i++){
aux=lista[i];
j=i-1;
while(j>=0 && lista[j]>aux){
comp+=2;
troca++;
lista[j+1]=lista[j];
j--;
}
lista[j+1]=aux;
}
}
public void QuickSort(){
comp=0;
troca=0;
particiona(0,tl-1);}
public void particiona(int inicio,int fim){
int i,j,pivo,aux;
i = inicio;
j = fim;
pivo = lista[(int)((inicio+fim)/2)];
while(i <= j){ comp++;
while(i < fim && lista[i] < pivo){
comp+=2;
i++;
}
while(j > inicio && lista[j] > pivo){
comp+=2;
j--;
}
if(i<= j){
troca++;
aux = lista[i];
lista[i] = lista[j];
lista[j] = aux;
i++;
j--;
}
}
if(inicio < j){
particiona(inicio,j);
}
if(i < fim){
particiona(i,fim);
}
}
}
Classe Principal
public class comp {
public static void main(String[] args) {
int i,c1=0,c2=0,c3=0,c4=0,t1=0,t2=0,t3=0,t4=0;
ord l= new ord();
for(i=0;i<50;i++){
l.insere_aleatorio();
l.bulblesort();
c1+=l.comp;
t1+=l.troca;
l.QuickSort();
c4+=l.comp;
t4+=l.troca;
l.insertionsort();
c3+=l.comp;
t3+=l.troca;
l.selectionsort();
c2+=l.comp;
t2+=l.troca;}
System.out.println("Troca do bubble = comp = " + c1/50 + " troca= "+ t1/50);
System.out.println("Troca do select = comp = " + c2/50 + " troca= "+ t2/50);
System.out.println("Troca do insert = comp = " + c3/50 + " troca= "+ t3/50);
System.out.println("Troca do quick = comp = " + c4/50 + " troca= "+ t4/50);
}
}
Vlw…