コード例 #1
0
ファイル: heap.c プロジェクト: bennidhamma/interview-prep
void pq_insert (priority_queue *q, int x)
{
	q->n++;
	int index = q->n;
	int parent_index = pq_parent(index);

	q->q[index] = x;

	while(parent_index != -1 && q->q[parent_index] > q->q[index])
	{
		q->q[index] = q->q[parent_index];
		q->q[parent_index] = x;
		index = parent_index;
		parent_index = pq_parent(index);
	}
}
コード例 #2
0
ファイル: basic_heap.c プロジェクト: BrettWTurley/life
// Find parents and swap if necessary
void pq_bubble_up(prio_q* pq, int val)
{
    // Start with given node and its parent
    int p = pq_parent(val);
    if(p == -1) return;
    // Swap if needed
    if(pq->q[p] < pq->q[val])
    {
        pq_swap(pq, p, val);
        // Move to next pair
        pq_bubble_up(pq, p);
    }
}