查找中位数
2017-12-29 11:29
176 查看
/* *查找array数组里面array[left-right]第Max大的 *参数:array 存储数据的数组 * left 数组的左界 * right 数组的右界 * Max 查找的第Max大 */ void find(int array[] , int left , int right , int Max) { if(left>right) { printf("%d\n",array[left+Max]); return; } int middle=array[left]; int l = left; int r = right; while(l < r){ while((l < r)&&(array[r] >= middle)) { r--; } array[l] = array[r]; while((l < r) && (array[l] <= middle)) { l++; } array[r] = array[l]; } if((l - left) == Max) { printf("%d\n",array[l]); exit(0); } if((l-left) < Max) { find(array , l+1 , right , Max-(l-left)-1); } else { find(array , left , l-1 , Max); } } /* *查找中位数 *参数: array 存储数据的数组 * length 数组的长度 */ void f(int array[] , int length){ find(array , 0 , length-1 , length/2); } /* *测试用例 */ void main() { int data[]={1,2,3,4,2,1,1,2,5,3,11}; f(data , 11); }
相关文章推荐
- sicily 1022---可用于大数据排序查找中位数(非常快)--优先队列
- spark 查找 中位数
- Python查找两个有序列表中位数的方法【基于归并算法】
- 二分查找-两已排序数组中找中位数二题
- 第1章第1节练习题10 查找中位数
- 查找——两个有序序列的中位数
- 随时查找中位数——pat1057
- 二分查找、中位数查找
- leetcode 295. Find Median from Data Stream 双优先级队列 + 中位数查找
- 使用最大堆和最小堆实现中位数的查找
- [LeetCode]Median of Two Sorted Arrays 二分查找两个有序数组的第k数(中位数)
- 增量查找中位数
- 查找中位数
- 海量数据中查找中位数
- Google 面试题:Java实现用最大堆和最小堆查找中位数 Find median with min heap and max heap in Java
- 解题报告:LeetCode Find Median from Data Stream(查找中位数)
- 第九章中位数和顺序统计学之“查找第i小的元素(递归版)平均运行时间为O(n)算法”
- 线性时间查找中位数算法
- Median of Two Sorted Arrays---两个有序数组查找中位数
- Java实现用最大堆和最小堆查找中位数 Find median with min heap and max heap in Java