国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

數據結構-堆(Heap)

2019-11-06 06:22:27
字體:
來源:轉載
供稿:網友
#include <iostream>#include <vector>using namespace std;template<typename T>   //仿函數,用來控制大堆小堆struct Bigger{	bool Operator()(T left, T right)	{		return left > right;	}};template<typename T>struct Lower{	bool operator()(T left, T right)	{		return left < right;	}};template<typename T, typename Compare = Bigger<T>>class Heap{public:	Heap(){}	Heap(T* a, size_t size)		:_a(a, a + size)	{		for (int i = (_a.size() - 2) / 2; i >= 0; --i)		{			_AdjustDown(i);		}	}	void Push(const T& x)	{		_a.push_back(x);		_AdjustUp(_a.size() - 1);	}	void Pop()	{		if (_a.size() == 0)			return;		swap(_a[0], _a[_a.size() - 1]);		_a.pop_back();		_AdjustDown(0);	}PRotected:	void _AdjustDown(size_t index)  	{		size_t parent = index;		size_t child = parent * 2 + 1;		while (child < _a.size())		{			if (child + 1<_a.size() && Compare()(_a[child + 1], _a[child]))			{				++child;			}			if (Compare()(_a[child], _a[parent]))			{				swap(_a[parent], _a[child]);				parent = child;				child = parent * 2 + 1;			}			else			{				break;			}		}	}	void _AdjustUp(size_t index)  	{		size_t child = index;		size_t parent = (child - 1) / 2;		while (child > 0)		{			if (Compare()(_a[child], _a[parent]))			{				swap(_a[parent], _a[child]);				child = parent;				parent = (child - 1) / 2;			}			else			{				break;			}		}	}protected:	vector<T> _a;};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 山阴县| 明光市| 静海县| 公主岭市| 镇平县| 威信县| 沈阳市| 乐山市| 广宗县| 福建省| 平邑县| 锦屏县| 密山市| 普陀区| 黄山市| 宁国市| 乐清市| 金溪县| 游戏| 平昌县| 星子县| 哈巴河县| 广安市| 苏尼特右旗| 和龙市| 普陀区| 灌云县| 松潘县| 华池县| 北票市| 建瓯市| 阿拉善右旗| 渝中区| 磴口县| 镶黄旗| 方城县| 田林县| 屏东市| 安义县| 修文县| 盐池县|