查找数组arr中第k大/小的奇数,如果不存在则返回0

public class NumUtil {

    /**
     * 启动方法
     * @param args args[0]是第k个数
     */
    public static void main(String[] args) {
        int[] arr = {88, 0, 1, 3,5,7, 9, 2,4, 8, 10};
        int k=0;
        try{
            k=Integer.parseInt(args[0]);
        }catch (ArrayIndexOutOfBoundsException aioe){
            System.out.println("请输入参数k");
            System.exit(-1);
        }catch (NumberFormatException nfe){
            System.out.println("参数k应为正整数");
            System.exit(-1);
        }
        if(k<=0){
            System.out.println("参数k应为正整数");
            System.exit(-1);
        }
        NumUtil numUtil = new NumUtil();
        int number = numUtil.findKth(arr, k);
        System.out.println("第"+k+"小的数是:"+number);
    }

    /**
     * 查找数组arr中第k小的奇数,如果不存在则返回0. (arr[i] > 0 (i>=0))
     * 计算出时间复杂度(注意代码注释,不要使⽤库函数或脚本中已经实现好的排序算法和⼯具, 需要⾃⼰实现数据结构和所需要的算法)
     * 格式:
     * public int findKth(int[] arr, int k){
     *
     * //代码
     * }
     * @param array  无序数组
     * @param k 第k小的数
     * @return 找到的数,没找到则返回 0
     */
    private int findKth(int[] array, int k) {
        array = sort(array,true);//正序排序数组,找最k大的数asc=false即可
        int index = 1; //查找数据索引
        for (int i = 0;iarray[j+1];
                else  //逆序
                    condition=array[j]

 

你可能感兴趣的:(java)