算法导论-优先级队列-C语言

来源:互联网 发布:一战各国伤亡知乎 编辑:程序博客网 时间:2024/05/16 07:27
#define MIN_INT (-65535)int heapSize;void exchange(int array[],int a, int b);void maxHeapify(int array[], int i);int main(){    printf("Hello world!\n");    return 0;}void maxHeapify(int array[], int i){    int l = i * 2 + 1;    int r = (i + 1) * 2;    int largest = i;    if(l < heapSize && array[l] > array[i])    {        largest = l;    }    if(r < heapSize && array[r] > array[largest])    {        largest = r;    }    if(largest != i)    {        exchange(array,largest,i);        heapHeapify(array,largest,heapSize);    }}int heapMaxMum(int array[]){    return array[0];}int heapExtractMax(int array[]){    int max;    if(heapSize < 1)    {        return -1;//Error heap overflow    }    max = array[0];    array[0] = array[heapSize - 1];    maxHeapify(array,0,heapSize - 1);    return max;}void heapIncreaseKey(int array[],int i,int key){    int parent;    if(array[i] < key)    {        return;//Error,key must be larger than array[i]    }    array[i] = key;    parent = (i - 1) / 2;    while(i > 0 && array[parent] < key)    {        exchange(array,parent,i);        i = parent;        parent = (i - 1) / 2;    }}void maxHeapInsert(int array[],int key){    array[heapSize] = MIN_INT;    heapIncreaseKey(array,heapSize,key);    ++heapSize;}// exchange content of position a and b in arrayvoid exchange(int array[],int a, int b){    int temp;    temp = array[a];    array[a] = array[b];    array[b] = temp;}

0 0