配列arrのk番目の大きい/小さい奇数を検索し、存在しない場合は0を返します.

1649 ワード

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]