Pregunta: Hay 5 estudiantes en la clase que tomaron el examen (el puntaje total es de 10 puntos). Tomaron 5 puntos, 3 puntos, 5 puntos, 2 puntos y 8 puntos respectivamente. Por favor, escriba un programa para clasificar los puntajes de mayor a menor.
Idea: Solicite una matriz unidimensional para almacenar la puntuación (algunas personas obtienen 1 punto, algunas personas obtienen 2 puntos ...), y luego generan información de acuerdo con la puntuación.
Debido a que el puntaje total es de 10 puntos, debemos solicitar un arreglo arr con una capacidad de 11. Como la primera persona tiene 5 puntos, arr [5] = 1; la segunda persona tiene 3 puntos, entonces arr [3] = 1; la tercera persona tiene 5 puntos, entonces arr [5] = 2; la cuarta persona Son 2 puntos, entonces arr [2] = 8; la quinta persona tiene 8 puntos, entonces arr [8] = 1.
Es decir, 8 puntos aparecieron una vez, 5 puntos aparecieron dos veces, 3 puntos aparecieron una vez y 2 puntos aparecieron una vez.
A continuación, solo tenemos que imprimir las puntuaciones que han aparecido.
1 paquete com.guohao.arithmetics; 2 3 public class BucketSort { 4 public static void main (String [] args) { 5 int [] score = {5,3,5,2,8}; // array a ordenar 6 int [] arr = new int [11]; // Barriles 7 8 para ( int i = 0; i <5; i ++ ) { 9 arr [puntajes [i]] ++; // Recuento: cada uno Varias personas obtienen un puntaje de 10 } 11 12 para ( inti = 0; i <11; i ++) { // 0 ~ 10 puntos, imprima varias veces para cada aparición de la puntuación 13 para ( int j = 1; j <= arr [i]; j ++ ) { 14 Sistema .out.print (i + "" ); 15 } 16 } 17 18 } 19 20 21 }
Este algoritmo es como 11 cubetas con números del 0 al 10. Cada vez que aparece un número, se coloca una pequeña bandera en la cubeta correspondiente. Finalmente, solo cuente la cantidad de pequeñas banderas en cada cubeta.
- Ordena los n números del 1 al 1000:
1 paquete com.guohao.arithmetics; 2 3 import java.util.Scanner; 4 5 / ** 6 * Ordenar los números entre 1 ~ 1000 7 * / 8 public class BucketSort { 9 public static void main (String [] args) { 10 Scanner reader = new Scanner (System.in); 11 int n = reader.nextInt (); // Leer el número de datos que se ordenarán 12 int [] arr = new int [1001]; // Crear Bucket Array 13 14 para( int i = 1; i <= n; i ++) { // Count, poner una pequeña bandera en el cubo 15 int t = reader.nextInt (); 16 if (t <1 || t> 1000 ) { 17 Sistema .out.println ("¡Los datos de entrada no cumplen con los requisitos, vuelva a ingresar!" ); 18 i-- ; 19 continuar ; 20 } 21 arr [t] ++ ; 22 } 23 24 para ( int i = 1; i <= 1000; i ++ ) { 25 para ( int j = 1; j <= arr [i]; j ++ ) { 26 System.out.print (i + ""); // imprime el número de depósito varias veces cuando aparece 27 } 28 } 29 30 reader.close (); 31 } 32 33 34 }