最大堆的建立和堆排序
2011-02-15 15:02
211 查看
堆是一种优先级队列的数据结构,以完全二叉树的形式展现。
以下是示例代码
以下是示例代码
#include <iostream> using namespace std; void initMaxHeap(int a [], int size) { for (int i = size/2; i > 0; --i) { int m = a[i-1]; int c = 2*i; while (c <= size) { if (c < size && a[c-1] < a[c]) ++c; if (m >= a[c-1]) break; a[c/2-1] = a[c-1]; c *= 2; } a[c/2-1] = m; } } void MaxHeapSort(int a [], int size) { for (int i = 0; i < size; ++i) { int max = a[0]; int cursize = size-i; int m = a[cursize-1]; a[cursize-1] = max; --cursize; int c = 2; while (c <= cursize) { if (c < cursize && a[c-1] < a[c]) ++c; if (m >= a[c-1]) break; a[c/2-1] = a[c-1]; c *= 2; } a[c/2-1] = m; } } int main() { int a[] = { 1, 2, 3, 7, 0, 10, 5, 9, 6, 8, 4 }; initMaxHeap(a, 11); MaxHeapSort(a, 11); return 0; }
相关文章推荐
- c++实现最大堆建立(链表结构)和堆排序
- c++实现最大堆建立(链表结构)和堆排序
- c++实现最大堆建立(链表结构)和堆排序
- c++实现最大堆建立(链表结构)和堆排序
- 堆排序和建立最大堆
- 我理解的最大堆排序
- 堆排序和优先队列【最大堆】
- 最大堆及堆排序的实现
- 算法导论-----------堆排序研究 (堆排序原理及算法实现(最大堆))
- 搜索树的建立,高度的获得,最大值的获得
- 最大堆及堆排序的Java实现_world
- 客户端C和服务器S之间建立一个TCP连接,该连接总是以1KB的最大段长发送TCP段,客户端C有足够的数据要发送。当拥塞窗口为16KB的时候发生超时,如果接下来的4个RTT往返时间内的TCP段的传输是成
- 最大堆排序
- 最大堆排序
- 苹果将在日本建立可能是亚洲最大的研发基地
- 最大/最小堆排序
- 堆的建立、删除、插入操作以及堆排序
- 客户端C和服务器S之间建立了一个TCP连接,TCP最大段长度为1KB,客户端C当前的拥塞窗口是16KB,向服务器S连续发送2个最大段之后,成功收到服务器S发送的第一段的确认段,确认段中通告的接受窗口大
- 数据结构中堆的建立,建小堆,以及堆排序
- 堆排序原理及算法实现(最大堆)