题解 | #明明的随机数#
明明的随机数
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; } }