Algoritmo: clasificación de cubos (versión lite)

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 }

     

Supongo que te gusta

Origin www.cnblogs.com/Seraph1999/p/12716939.html
Recomendado
Clasificación