public void minHeapify_top_down(int index) {
		int small;
		if (index * 2 + 1 >= heap.size())
			return;
		else if (2 * index + 2 == heap.size()) {
			if (heap.get(2 * index + 1).f_val < heap.get(index).f_val) {
				Values temp = heap.get(2 * index + 1);
				heap.set(2 * index + 1, heap.get(index));
					find_index.put(heap.get(index).tilenum, 2*index+1);
				heap.set(index, temp);
					find_index.put(temp.tilenum, index);
			}
			return;
		}
		if (heap.get(index * 2 + 1).f_val < heap.get(2 * index + 2).f_val) {
			small = index * 2 + 1;
		} else {
			small = 2 * index + 2;
		}
		if (heap.get(small).f_val < heap.get(index).f_val) {
			Values temp = heap.get(small);
			heap.set(small, heap.get(index));
				find_index.put(heap.get(index).tilenum, small);
			heap.set(index, temp);
				find_index.put(temp.tilenum, index);
			minHeapify_top_down(small);
		}
	}