1、堆的建立过程:
heapy()
2、
步骤1:用一个数组记录当前每个index对应的bucket/vat值,每次从数组中取出最大的(max_element),将该index的bucket+1,再把新的值存入数组。计算当前组的count+bucket/val(向上取整)。
步骤1重复若干次,每次结果放入一个优先队列,从优先队列找最小值。
3、
数据流中位数维持两个优先队列。
priority<int,vector<int>,greater<int> >small 存放从小到大的数据,即有序数组右半侧数据;
priority<int,vector<int>,less<int> >big存放从大到小的数据,即有序数组左半侧数据;
维持数组平衡,即两个队列的长度差值<1。
如果big和small大小相等,说明mid = small.top+big.top/2;
如果big和small不等,说明mid在较多那侧的top。