\begin{algorithm} \caption{D-ary Extract Maximum Element} \begin{algorithmic} \PROCEDURE{D-HeapExtractMax}{$A$} \IF{$A.\text{heap-size} < 1$} \STATE \textbf{error} "heap underflow" \ENDIF \STATE $max = A[1]$ \STATE $A[1] = A[A.\text{heap-size}]$ \STATE $A.\text{heap-size} = A.\text{heap-size} - 1$ \STATE \CALL{D-MaxHeapify}{$A, 1$} \RETURN $max$ \ENDPROCEDURE \STATE \PROCEDURE{D-MaxHeapify}{$A, i$} \STATE $largest = i$ \FOR{$k = 1$ \TO $d$} \STATE $child_k =$ \CALL{D-Child}{$i, k$} \IF{$child_k \le A.\text{heap-size}$ \AND $A[child_k] > A[largest]$} \STATE $largest = child_k$ \ENDIF \ENDFOR \IF{$i \ne largest$} \STATE exchange $A[i]$ with $A[largest]$ \STATE \CALL{D-MaxHeapify}{$A, largest$} \ENDIF \ENDPROCEDURE \end{algorithmic} \end{algorithm}