minHeapArray.png

int heapSize - индекс свободной ячейки.

insert(x) - $O(1)$

void insert(int x) {
	if (heapSize >= array.size()) {
		throw Exception("Heap overflow"); 
	}
	array[heapSize] = x; 
	++heapSize; 
}

min() - $O(n)$

int min() {
	return minLinearSearch(array); 
}

extractMin() - $O(n)$

int extractMin() {
	delIndex = minLinearSearch(array);
	swap(delIndex, array[LAST_ELEMENT_INDEX]); 
	delete array[LAST_ELEMENT_INDEX]; 
}

Последние 2 строчки - делаем так, т.к. элемент может быть в середине, а сдвигать массив (n операций) не очень хотелось бы.