Ordenação de Arrays

6 respostas
internetws

Gostaria de saber como faço para ordernar esse array:

public class Matriz{
    public static void main(String[] args){
        int[] nums = {1,4,56,63,6,3,66,23};
        for(int i = 0; i < nums.length; i++){
            System.out.println("Numeros: " + nums[i]);            
        }
    }
}

6 Respostas

crpablo

http://www.guj.com.br/java.tutorial.artigo.109.1.guj

peerless

Oi, existem algoritmos prontos já , disponíveis para estudo aqui

t+

Paulo_Silveira

Arrays.sort(array);

Arrays é do pacote java.util.

Kassiane_Pretti

http://www.guj.com.br/posts/list/45985.java#241201

Marcio_Duran
internetws:
Gostaria de saber como faço para ordernar esse array:
public class Matriz{
    public static void main(String[] args){
        int[] nums = {1,4,56,63,6,3,66,23};
        for(int i = 0; i < nums.length; i++){
            System.out.println("Numeros: " + nums[i]);            
        }
    }
}

:idea: Exemplo encontrado no GUJ :mrgreen:

import java.util.*;  
      
    class TesteOrdemCrescente {  
        public static void main(String[] args) {  
             double w[] ={1.1,4.2,5.5,6.7,6.3,6.9,3.8,6.6,2.3};
             Arrays.sort (w); 
             for (double d: w) {  
                System.out.printf ("%.2f%n", d);  
            }  
       }  
   }

:!: Pensando em um modo mais OO estruturado :thumbup:

public class MatrizJava {
    private static int v[]={1,4,56,63,6,3,66,23};
    private static int i,j;    
    public static void main(String args[]){        
        for(i = 0; i < v.length-1; i++){
            for(j = 0; j < v.length-1;j++){                
                if(v[j] > v[j+1]){
                    int aux = v[j];  v[j] = v[j+1]; v[j+1]=aux;
                }
            }
        }
        for(i = 0; i < 8; i++){
            System.out.println(v[i]);
        }
    }
    
}

:idea:[size=18] Outra forma em pensar em Ordenação de Arrays[/size] :thumbup:

import java.util.*;
	
	public class TestaClasseArrays {
	    
	    public static void main(String[] args) {
	        int[] v1 = new int[10];
	        int[] v2 = new int[10];
	        
	        //Preenche o vetor v1 com valores randomicos
	        for (int i = 0; i < v1.length; i++)
	            v1[i] = (int)(Math.random() * 100);
	        imprimeVetor(v1);
	        
	        //Preenche o v2 com o valor 5
	        Arrays.fill(v2, 5);
	        imprimeVetor(v2);
	        
	        //Verifica se v1=v2
	        System.out.println("\nV1 == V2 ?" + Arrays.equals(v1,v2));
	        
	        //Ordena o vetor v1 utilizando a técnica de QuickSort
	        Arrays.sort(v1);
	        imprimeVetor(v1);
	        
	        //Procura no vetor V1 pelo valor 10
	        System.out.print("\nExiste o numero 10 dentro do vetor v1 ? ");
	        int pos = Arrays.binarySearch(v1, 10);
	         if (pos > 0) System.out.println("Sim e está na posição "+pos);
	         else System.out.println("Não");
	    }
	    
	    private static void imprimeVetor(int v[]){
	        System.out.println();
	        for (int i=0; i<10; i++ ) {
	            System.out.println("v["+i+"]="+v[i]);
	        }
	    }
	}
ViniGodoy

Esse “modo mais OO estruturado”, nem é OO, nem é muito estruturado e nem é eficiente.

O Bubble sort (método da bolha) é um método muitíssimo lento, geralmente só usado em dispositivos com tamanho de pilha limitadíssimos e na ordenação de poucos elementos. Eu uma vez usei num terminal de cartão de crédito banjo, que era tinha essas características.

No mais, não há porque não usar o Arrays.sort, como no seu primeiro exemplo.
Ele sim é mais estruturado, reproveita código (o do “improved” QuickSort), mas também não é mais orientado a objetos.

A diferença do Quicksort do Java para o Quicksort convencional é que ele garante que elementos iguais não serão movimentados.

De qualquer forma, ficaram legais os três exemplos. :slight_smile:

Criado 22 de fevereiro de 2008
Ultima resposta 23 de fev. de 2008
Respostas 6
Participantes 7