Recorrido panorámico de entrenamiento del algoritmo de la copa Blue Bridge (solución Java)

Descripción del problema

Xiao Ming vino a visitar un lugar pintoresco, pero su tiempo es limitado y no puede visitar todos los lugares escénicos. Por lo tanto, descargó la puntuación de cada lugar de Internet. Espera hacer que la puntuación total de los lugares visitados sea la más alta, por lo que quiere que lo ayudes Clasificó las atracciones N en el orden más bajo.

Formato de entrada

La primera línea de entrada contiene un número entero positivo N, que representa N lugares escénicos.
  Hay N números enteros positivos en la segunda línea, que representan el valor de puntuación de cada lugar escénico.

Formato de salida

Genere una línea que contenga N números enteros positivos, lo que indica que las puntuaciones de N lugares escénicos están organizadas en orden descendente

Entrada de muestra

4
3 2 4 1

Salida de muestra

4 3 2 1

Tamaño de datos y convención

N <= 1000, la puntuación de cada lugar escénico <= 10000.

Implementación de algoritmos

Esta pregunta usa el tipo rápido de revisión mágica, establece el centinela, coloca el grande a la izquierda y el pequeño a la derecha, puedes conseguirlo.

import java.util.Scanner;

public class Main{
    
    
    public static void main(String[] args) {
    
    
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
    
    
            nums[i] = scanner.nextInt();
        }
        quickSort(nums,0,n-1);
        for (int num: nums) {
    
    
            System.out.print(num + " ");
        }
        scanner.close();
    }

    /**
     * 快速排序 从大到小
     * @param nums
     * @param left
     * @param right
     */
    public static void quickSort(int[] nums,int left,int right){
    
    
        if(left >= right) return;
        int point = nums[left];
        int i = left;
        int j = right;
        while(i < j){
    
    
            while (i < j && nums[j] <= point) j--;
            nums[i] = nums[j];
            while (i < j && nums[i] >= point) i++;
            nums[j] = nums[i];
        }
        nums[j] = point;
        quickSort(nums,left,j-1);
        quickSort(nums,j+1,right);
    }
}

Supongo que te gusta

Origin blog.csdn.net/L333333333/article/details/103934875
Recomendado
Clasificación