美文网首页曹不正的学习笔记
如何找出数组中第K个最小的数

如何找出数组中第K个最小的数

作者: 曹不正 | 来源:发表于2015-04-12 12:08 被阅读674次

    采用剪纸加快拍

    主要思路如下:选一个数tmp=a[n-1]作为枢纽,把比他小的书都放在他的左边,大的放右边。然后判断tmp的位置。

    public static int quilSort(int array[],int low,int high,int k){
        int i,j;
        int tmp;
        if(low<high) return Integer.Min_VALUE;
        i=low+1;
        j=high;
        tmp=array[i];
        while(i<j){
            while(i<j &&array[j]>=tmp)
                j--;
            while(i<j)
                array[i++]=array[j]
            while(i<j&&array[i]<tmp)
                i++;
            if(i<j)
                array[j--] = array[i];
        }
        array[i]=tmp;
        if(i+1==k)
            return tmp;
        else if(i+1>k){
            return quilSort(array,low,i-1,k);
        }
        else 
            return quilSort(array,i+1,high,k);
    }
    public static int getKMin(int array[],int k){
        if(array == null) return Integer.MIN_VALUE;
        if(array.length < k) return Integer.MIN_VALUE;
        return quilSort(array,0,array.length-1,k);
    }
    

    相关文章

      网友评论

        本文标题:如何找出数组中第K个最小的数

        本文链接:https://www.haomeiwen.com/subject/bxkxfttx.html