Javascript O(log n) + O(1) binarySearch minHeap
\n/**\n * initialize your data structure here.\n */\nvar MedianFinder = function() {\n    this.arr = [];\n};\n\n/** \n * @param {number} num\n * @return {void}\
```\n/**\n * initialize your data structure here.\n */\nvar MedianFinder = function() {\n    this.arr = [];\n};\n\n/** \n * @param {number} num\n * @return {void}\n */\nMedianFinder.prototype.addNum = function(num) {\n    const bs = n => {\n        let start = 0;\n        let end = this.arr.length;\n        while (start < end){\n            let mid = Math.floor((start+end)/2);\n            if (n > this.arr[mid]) start = mid+1;\n            else end = mid;\n        }\n        this.arr.splice(start,0,n);\n    }\n    if (this.arr.length === 0) this.arr.push(num);\n    else bs(num);\n};\n\n/**\n * @return {number}\n */\nMedianFinder.prototype.findMedian = function() {\n    const mid = Math.floor(this.arr.length/2);\n    return (this.arr.length%2===0) ? (this.arr[mid-1]+this.arr[mid])/2 : this.arr[mid];\n};\n\n/** \n * Your MedianFinder object will be instantiated and called as such:\n * var obj = new MedianFinder()\n * obj.addNum(num)\n * var param_2 = obj.findMedian()\n */\n```
['Heap (Priority Queue)', 'Binary Tree', 'JavaScript']