题解 | #明明的随机数#

明明的随机数

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

}

全部评论

相关推荐

07-01 17:14
中北大学 Java
兄弟们是真是假
牛客46374834...:我在boss上投java岗从来没成功过
点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-26 17:24
已编辑
宁波大学 Java
迷失西雅图:别给,纯kpi,别问我为什么知道
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务