PTA 程序设计天梯赛 Java L1-010 比较大小 (10分) && 顺便用了一下快速排序

L1-010 比较大小

本题要求将输入的任意3个整数从小到大输出。

输入格式:
输入在一行中给出3个整数,其间以空格分隔。

输出格式:
在一行中将3个整数从小到大输出,其间以“->”相连。

输入样例:

4 2 8

输出样例:

2->4->8

实现代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    
    
    public static void main(String[] args) {
    
    
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        try {
    
    
            String[] strings = bf.readLine().split(" "); //输入, 并分隔成字符串数组
            int[] its = new int[strings.length];
            for (int i = 0; i < strings.length; i++) {
    
     // 转成int型数组
                its[i] = Integer.parseInt(strings[i]);
            }
            //快速排序
            quickSort(its,0, its.length-1);
            System.out.println(join(its ,"->"));

        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
    }

    /**
     * 快速排序
     * @param arr  数组
     * @param low
     * @param high
     */
    public static void quickSort(int[] arr ,int low ,int high){
    
    
        if (low>=high){
    
    
            return;
        }
        int i=low,j=high,
                    temp = arr[low];//哨兵
        while(i<j){
    
    
            while(arr[j]>=temp && i<j){
    
     // 先移动右边的j ;
                j--;
            }
            while(arr[i]<=temp && i<j){
    
      //再移动左边的i
                i++;
            }
            if (i<j){
    
    
                int t = arr[i];
                arr[i] = arr[j];
                arr[j] = t;
            }
        }
        //最后将 i和j相等的位置上的数和基准哨兵交换
        arr[low] = arr[i];
        arr[i] = temp;

        quickSort(arr,low,i-1);
        quickSort(arr, j+1,high);

    }

    /**
     * 拼接字符串数组
     * @param arr 数组
     * @param reg 拼接用的字符串
     * @return String
     */
    public static String join(int[] arr ,String reg){
    
    
        String str = "";
        for (int i = 0; i < arr.length; i++) {
    
    
            str += arr[i];
            if (i == arr.length-1) continue;
            str += reg;
        }
        return str;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_37079157/article/details/109273683