您的位置:首页 > 编程语言 > C语言/C++

堆排序及其c语言实现

2013-06-21 13:03 232 查看
堆的性质:堆是一棵完全二叉树,它有最大堆和最小堆之分,这里只分析最大堆!(最小堆与最大堆类似) 就是所有的子节点都小于根节点的完全二叉树

堆的几种操作(数组实现): 其中 len 表示 数组长度,headsize表示堆的长度

其中堆的左节点编号

int LEFT(int i )
{
return i*2;
}


堆的右节点编号:

int RIGHT(int i )
{
return i*2 +1;
}


堆的头结点编号

int PARENT(int i )
{
return i/2;
}


1.保持堆的性质:

7.加入到某值 O(lgn)

void MAX_HEAP_INSERT(int A[],int key)
{
heapsize = heapsize +1;
A[heapsize] = INT_MIN;
HEAP_INCREASE_KEY(A,heapsize,key);
}


View Code
其中堆排序没有响应的删除算法,只有朴素思路。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: