Is this logic correct?
In an efficient minimum heap implemented with an array, it is O(1) to find the smallest value, because it is just the top-most element (the first element of the array. It is also O(1) to get the second smallest value, because it will be an immediate child of the top node (either the second or third values in the array). However, it is O(log(n)) to get the third smallest value, because the value could be anywhere else in the array in the worst case. We can do better than a linear search (O(n)) by effectively calling the extract minimum function twice, which has O(log(n)), and then get the minimum (which is still O(1)).