median of unsorted array

Median of unsorted array

min heap : special case of K-th largest/smallest of unsorted array.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int (vector<int>& array){
int mid = array.size() / 2 + 1;
priority_queue<int, vector<int>, greater<int>> pq;
for(int num : array){
pq.push(num);
if(pq.size() > mid){
pq.pop();
}
}
int res;
if(array.size() % 2 == 0){
res = pq.top(); pq.pop();
res = (res + pq.top()) / 2; pq.pop();
} else {
res = pq.top();
}
return res;
}