堆排序

来源:互联网 发布:slax linux中文版 编辑:程序博客网 时间:2024/06/05 19:49
void dealHeap(int *p, int index, int count){    if (2*index + 2 > count)        return ;    int left = 2*index + 1;    int right = 2*index + 2;    int m = p[left] > p[right] ? left : right;    if (p[m] > p[index])    {        swap(&p[m], &p[index]);        dealHeap(p, m, count);    }}void createHeap(int *p, int count){    for (int i = count; i >= 0; i--)    {        dealHeap(p, i, count);    }}void heapSort(int *p, int count){    createHeap(p, count);    for (int i = count; i >= 0; i--)    {                dealHeap(p, 0, i);        if (i != 1)            swap(&p[0], &p[i]);    }}


原创粉丝点击