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