数据流的逐个流入性质,很符合插入排序的特性。每push一个数据,就将其插入到该在的位置,使数据流有序。

class Solution {
  public:
    vector<int> stream;
    void Insert(int num) {
        stream.push_back(num);
        insertSort(stream);
    }

    double GetMedian() {
        int len = stream.size();
        if (len % 2) {
            return stream[len / 2];
        } else {
            return ((double)stream[len / 2] + (double)stream[len / 2 - 1]) / 2.0;
        }
    }
    void insertSort(vector<int>& v) {
        int len = v.size();
        if (len > 1) {
            int prior = v[len - 1];
            for (int i = 0; i < len - 1; i++) {
                if (v[i] >= prior) {
                    v.insert(v.begin() + i, prior);
                    v.pop_back();
                    break;
                }
            }
        }
    }

};