博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Algorithm Part I:Priority Queues
阅读量:6837 次
发布时间:2019-06-26

本文共 1860 字,大约阅读时间需要 6 分钟。

1.binary heap实现

BinaryHeap.h

#ifndef BINARYHEAP_H#define BINARYHEAP_Hclass BinaryHeap{    public:        BinaryHeap(int N);        bool isEmpty();        void exchange(int i,int j);        void insert(int key);        int delMax();        int getMax();        virtual ~BinaryHeap();    protected:    private:        int N;        int * data;        void swim(int key);        void sink(int key);};#endif // BINARYHEAP_H

BinaryHeap.cpp

#include "BinaryHeap.h"#include 
BinaryHeap::BinaryHeap(int N){ this->N = 0; this->data = (int *)malloc(sizeof(int)*(N+1));}BinaryHeap::~BinaryHeap(){}bool BinaryHeap::isEmpty(){ return N == 0;}void BinaryHeap::exchange(int i,int j){ int temp = this->data[i]; this->data[i] = this->data[j]; this->data[j] = temp;}void BinaryHeap::swim(int key){ while(key > 1 && data[key/2] < data[key]) { exchange(key/2,key); key = key/2; }}void BinaryHeap::insert(int key){ N++; data[N] = key; swim(N);}void BinaryHeap::sink(int key){ while(key*2 <= N) { int j = key*2; if(j < N && data[j] < data[j+1]) j++; if(data[key] >= data[j]) break; else { exchange(key,j); key = j; } }}int BinaryHeap::delMax(){ int max = data[1]; exchange(1,N-1); N--; sink(1); return max;}int BinaryHeap::getMax(){ return data[1];}
main.c

#include 
#include "BinaryHeap.h"using namespace std;int main(){ BinaryHeap * bp = new BinaryHeap(10); bp->insert(3); bp->insert(2); bp->insert(1); bp->insert(5); bp->insert(8); bp->insert(7); cout << bp->getMax() << "\n"; bp->delMax(); cout << bp->getMax() << "\n"; char c; cin >> c; return 0;}

各操作时间复杂度的分析:

2.堆排序

堆排序的主要步骤:

(1)建堆

(2)依次移除最大元素,将它放到数组的尾端。

3.各种排序算法的分析

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
Ubuntu 12.04.1 OK335xS busybox-1.24.1 文件系统编译错误及解决方案
查看>>
一次优秀的代码提交应该包含什么?
查看>>
CF1036C Classy Numbers dfs+二分
查看>>
linux管理和进程(4)
查看>>
公钥与私钥,HTTPS详解 转载
查看>>
构建之法阅读笔记(3)
查看>>
UVA 10269 Adventure of Super Mario 最短路
查看>>
mysql having,group by查询去除重复记录
查看>>
PHP正则表达式 /i, /is, /s, /isU等
查看>>
羊车门问题
查看>>
【HNOI】 小A的树 tree-dp
查看>>
聊天室--java socket
查看>>
iOS 之 Swift 新特性
查看>>
j2me必备之网络开发数据处理
查看>>
关于C++的递归调用(n的阶乘为例)
查看>>
设计模式之四:模板方法模式
查看>>
UVA 11294 Wedding 2sat
查看>>
配置IIS服务器提供APP文件下载
查看>>
StringBuffer和StringBuilder的区别
查看>>
修改GDAL库支持RPC像方改正模型
查看>>