Exercício 1Faça um programa que leia 4 números do usuário e os imprima em ordem crescente. Utilize qualquer método de escrita e leitura que desejar.
Solução usando uma função própria de Insertion Sort:
Baseada em exemplo
dado aqui.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | import java.util.Scanner;public class principal { public static void main(String[] args) { Scanner s=new Scanner(System.in); System.out.println("Número de elementos a ordenar?"); int n=s.nextInt(); int matriz[]=new int[n]; System.out.println("Entre os elementos com [ENTER] após cada um: "); for(int i=0;i<n;i++){ matriz[i]=s.nextInt(); } s.close(); //não preciso mais do scanner; insertionSort(matriz); System.out.print("Matriz ordenada: "); imprimirMatriz(matriz); } private static void imprimirMatriz(int[] n) { for (int i = 0; i < n.length; i++) { System.out.print(n[i]); if (i < n.length-1) System.out.print(", "); //imprimo exceto após o último valor } System.out.println("\n"); } public static void insertionSort(int m[]) { for (int j = 1; j < m.length; j++) { int key = m[j]; int i = j-1; while ( (i > -1) && ( m [i] > key ) ) { m [i+1] = m [i]; i--; } m[i+1] = key; //printNumbers(array); //imprime enquanto está ordenando } }} |
Exemplo de execução do programa:
Número de elementos a ordenar?
4
Entre os elementos com [ENTER] após cada um:
45
34
67
89
Matriz ordenada: 34, 45, 67, 89
Mas isso pode ser simplificado ainda mais com o uso
das funções já existentes na classe Array:
12345678910111213141516171819202122232425262728 | import java.util.Scanner;import java.util.Arrays; public class SortA { public static void main(String[] args) { Scanner s=new Scanner(System.in); System.out.println("Número de elementos a ordenar?"); int n=s.nextInt(); int matriz[]=new int[n]; System.out.println("Entre os elementos com [ENTER] após cada um: "); for(int i=0;i<n;i++){ matriz[i]=s.nextInt(); } s.close(); //não preciso mais do scanner; Arrays.sort(matriz); System.out.print("Matriz ordenada: "); System.out.println(Arrays.toString(matriz)); }} |
Exemplo de execução do programa:
Número de elementos a ordenar?
4
Entre os elementos com [ENTER] após cada um:
34
56
75
12
Matriz ordenada: [12, 34, 56, 75]