Heap Data Structure an in place implementation