方法:插入排序

具体步骤:

1、当数组为空时,直接插入数据;当数组不为空时,遍历数组寻找合适的位置进行插入;这样得到的数组就行排序好的。 2、获取数据流的中位数。

时间复杂度:o(n)。

空间复杂度:o(n)。

class Solution {
  public:
    vector<int> res;
    void Insert(int num) {
	  	//数组为空时,直接插入数据
        if (res.empty())
            res.push_back(num);
	  	//数组不为空时,需要找对位置插入数据
        else {
            int i = 0;
            while (num >= res[i] && i < res.size()) {
                i++;
            }
            res.insert(res.begin() + i, num);
        }
    }

    double GetMedian() {
        int length = res.size();
        if (length % 2 == 1)
            return res[length / 2];
        else {
            double num1 = res[length / 2];
            double num2 = res[length / 2 - 1];
            return (num1 + num2) / 2;
        }
    }
};

上述方法插入时,寻找位置可以使用二分查找,而不是直接遍历,能够降低时间复杂度。