题解 | #明明的随机数#

明明的随机数

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

}

全部评论

相关推荐

10-05 11:11
海南大学 Java
投票
理想江南137:感觉挺真诚的 感觉可以试一试
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务