ブルーブリッジカップアルゴリズムトレーニングシーニックスポットツアー(Javaソリューション)

問題の説明

シャオミンは景勝地を訪ねてきましたが、時間が限られており、すべての景勝地を訪れることができないため、インターネットから各スポットのスコアをダウンロードしました。訪問したスポットの合計スコアを最高にしたいと考えているので、助けてほしいとのことです。彼はN個のアトラクションを下位にランク付けしました。

入力フォーマット

入力の最初の行には、N個の景勝地を表す正の整数Nが含まれています。
  2行目には、各景勝地のスコア値を表すN個の正の整数があります。

出力フォーマット

N個の景勝地のスコアが降順で配置されていることを示すN個の正の整数を含む行を出力します

サンプル入力

4
3 2 4 1

サンプル出力

4 3 2 1

データサイズと規則

N <= 1000、各景勝地のスコア<= 10000。

アルゴリズムの実装

この質問は、魔法の改訂の簡単な種類を使用し、歩哨を設定し、左側に大きなものを置き、右側に小さなものを置きます、あなたはそれを得ることができます。

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);
    }
}

おすすめ

転載: blog.csdn.net/L333333333/article/details/103934875