zoukankan      html  css  js  c++  java
  • 剑指offer 数据流中的中位数

    题目:

    如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。

    代码:

     1 class Solution {
     2 public:
     3     vector<int> list;
     4     void Insert(int num) {
     5         int length = list.size(), i = 0;
     6         for(; i < length; i ++)
     7             if(list[i] > num) {
     8                 list.insert(list.begin()+i,num);
     9                 break;
    10             }
    11         if( i == length )
    12             list.push_back(num);
    13     }
    14 
    15     double GetMedian() { 
    16         int length = list.size();
    17         int mid = length >> 1;
    18         if(length & 1)
    19             return list[mid];
    20         else
    21             return (list[mid] + list[mid-1]) / 2;
    22     }
    23 };

    我的笔记:

      选择使用选择排序法,对每个数字流中的数字进行排序,后将排序后的数组中的中位数输出,偶数位则输出前后平均数,奇数位则直接输出。

  • 相关阅读:
    2013年 积木大赛
    Matlab 画图2
    Matlab 画图1
    Matlab 数值计算
    Matlab 条件循环函数
    Non Super Boring Substring 题解(hash+思维)
    Matlab 数组
    Matlab 矩阵
    L
    hdu 1671Phone List
  • 原文地址:https://www.cnblogs.com/john1015/p/13141068.html
Copyright © 2011-2022 走看看