题解 | #明明的随机数#
明明的随机数
https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0
import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
//set集合接收数据,自动去重,然后使用快排排序。
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Set<Integer> set = new HashSet<>();
while (in.hasNext()) {
int N = in.nextInt();
for ( int i = 0 ; i < N; i++) {
set.add(in.nextInt());
}
}
Integer[] array = set.toArray(new Integer[0]); //set的toArray方法可以实现直接转化,传入一个要转为的类型的实例对象,可以用new Integer[0] 或者new Integer[]{}
Main m = new Main(); //必须创建静态方法的实例对象才能调用非静态方法。
m.qsort(array,0, set.size() - 1);
for ( Integer res : array)
System.out.println(res);
}
public Integer[] qsort(Integer[] array,int l, int r) {
if(l<r){
int flag = numflag(array,l,r);
swap(array,flag,l);
qsort(array,l+1,flag);
qsort(array,flag+1,r);
}
return array;
}
//寻找要和哨兵交换的值
public int numflag( Integer[] array, int l, int r){
int i = l;
int j = r;
while(i<j){
while (i < j && array[j] > array[l])j--;
while (i < j && array[i] < array[l])i++;
swap(array,i, j);
}
return i;
}
public void swap(Integer[] array,int i,int j){
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
阿里云成长空间 747人发布

