code: def heapify(x):
      
      n = len(x)
      # Transform bottom-up.  The largest index there's any point to looking at
      # is the largest with a child index in-range, so must have 2*i + 1 < n,
      # or i < (n-1)/2.  If n is even = 2*j, this is (2*j-1)/2 = j-1/2 so
      # j-1 is the largest, which is n//2 - 1.  If n is odd = 2*j+1, this is
      # (2*j+1-1)/2 = j so j-1 is the largest, and that's again n//2-1.
      for i in reversed(range(n//2)):
          _siftup(x, i)
docs: Transform list into a heap, in-place, in O(len(x)) time.