堆的插入和删除

  • 堆的建立,维护,插入和删除算法
  • 堆的插入算法:直接把结点插入到堆末尾,然后从下往上冒泡到合适的位置;
  • 堆的删除算法:把最后一个结点插入删除结点的位置,然后进行一次调整.
void max_heap_insert(int **par_array, int item_value)  
{  
    int index = 0;  
    int father_index = 0;  
    /*如果超过动态数组大小,则对其内容进行扩充*/  
    if(heap_size+1 > heap_cap_size)  
    {  
        *par_array = (int *)realloc(*par_array, 2*INIT_ARRAY_SIZE*sizeof(int));  
    }  
    (*par_array)[heap_size] = item_value;  
    index = item_value;  
    heap_size++;  
      
    while(index)  
    {  
        father_index = (index-1)/2;  
        if((*par_array)[index] > (*par_array)[father_index])  
            swap(&((*par_array)[index]), &((*par_array)[father_index]));  
        index = father_index;  
    }  
}  
void heap_delete(int par_array[], int item_value)  
{  
    int i = 0;  
    for(i = 0; i < heap_size; i++)  
    {  
        if(par_array[i] == item_value)  
            break;  
    }  
    par_array[i] = par_array[heap_size-1];  
    heap_size--;  
    max_heap_adjust(par_array, i);  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值