美文网首页
寻找无序数组中位数

寻找无序数组中位数

作者: 吕建雄 | 来源:发表于2020-03-16 22:33 被阅读0次

public class Middle{

/*

将数组的前(n+1)/2个元素建立一个最小堆。然后,对于下一个元素,和堆顶的元素比较,

如果小于等于,丢弃之,

如果大于,则用该元素取代堆顶,再调整堆,接着看下一个元素。

重复这个步骤,直到数组为空。当数组都遍历完了,堆顶的元素即是中位数。

*/

public static void main(String[] argv){

    int[] oriArr = {12, 34, 1, 209,17, 900, -10};

    int[] arr = {12, 34, 1, 209};

    heapSort(arr);

    adjustHeap(arr);

    System.out.println("中位数="+arr[0]);

}

//调整堆

public static void adjustHeap(int[] arr){

    int[] arr1 = {17, 900, -10};

    for(int i=0;i<arr1.length;i++){

        if(arr1[i]>arr[0]){

            arr[0] = arr1[i];

            heapSort(arr);

        }

    }

}

//从第一个非叶子结点开始

public static void heapSort(int[] arr){

    for(int i=(arr.length+1)/2;i>=0;i--){

        heapBuilder(arr,i,arr.length);

    }

}

//构建小顶堆

public static void heapBuilder(int[] arr,int i,int len){

    int k = i;

    int index = 2*k+1;

    int guard = arr[k];

    while(index<len){

        if(index+1 < len){

            if(arr[index]>arr[index+1]){

                index++;

            }

        }

        if(guard>arr[index]){

            arr[k] = arr[index];

            k = index;

            index = 2*k+1;

        }else{

            break;

        }

    }

    arr[k] = guard;

    }

}

代码实现

相关文章

  • 寻找无序数组中位数

    public class Middle{ /* 将数组的前(n+1)/2个元素建立一个最小堆。然后,对于下一个元素...

  • 10-6 求无序数组中的中位数算法

    求无序数组中的中位数算法

  • Median of medians无序数组寻找中位数最差O(n)

    在无序数组中寻找中位数,最差复杂度为O(n). 实现算法为Median of medians,又叫BFPRT算法。...

  • 数组--寻找中位数

    给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的...

  • 2020-08-20 力扣题四

    题目 寻找两个正序数组中位数 代码 方法二

  • 算法

    字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组中的中位数

  • 腾讯一面

    判断二叉树相等 无序数组求解中位数 “hello world”转为“world hello” 最长单调递增序列 2...

  • 无序数组中查找中位数

    给定一个无序的数组,请查找他们的中位数,比如用于统计公司所有人员工资的中位数,我们都知道对于实际情况来说平均数可能...

  • #4 Median of Two Sorted Arrays

    在两个有序数组中寻找中位数,思想时归并排序的思想,将两个数组归并排序到一个数组中,提前算出中位数的个数减少循环次数

  • 分治算法

    寻找两个有序数组的中位数 // 二分查找的思路,halfLen 是中位数的right 所以必须 m + n + 1...

网友评论

      本文标题:寻找无序数组中位数

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