久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

堆的實現(堆的建立及push、pop元素)-創新互聯

堆數據結構是一種數組對象,它可以被視為一棵完全二叉樹結構。

創新互聯建站專注于企業營銷型網站建設、網站重做改版、建德網站定制設計、自適應品牌網站建設、H5網站設計商城系統網站開發、集團公司官網建設、外貿營銷網站建設、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為建德等各大城市提供網站開發制作服務。

堆結構的二叉樹存儲:

大堆:每個父節點的都大于孩子節點;小堆:每個父節點的都小于孩子節點。

建堆:由于堆被視為完全二叉樹,故在h-1層找到第一個(從后往前找)非葉子結點,進行堆的下調

建大堆時,從下往上依次判斷并調整堆,使該結點的左右子樹都滿足大堆

建小堆時,從下往上依次判斷并調整堆,使該結點的左右子樹都滿足小堆

可見大堆的建立與小堆的建立方式類似,下面以大堆進行討論。

利用vactor模板存儲堆中元素

template<class T>
class Heap
{
public:
	Heap();
	Heap(const T* a, size_t size);
	void Push(const T& x);
	void Pop();
	T& GetTop();//訪問堆頂元素
	bool Empty();//判空
	size_t Size();//堆元素個數
	void PrintHeap();
protected:
	void _AdjustDown(size_t Parent);//下調--建大堆(每個父結點都大于孩子結點)
	void _AdjustUp(size_t Child);//上調--建小堆(每個父結點都小于孩子結點)
private:
	vector<T> _a;
};

實現堆的建立

template<class T>
Heap<T>::Heap()
:_a(NULL)
{}
template<class T>
Heap<T>::Heap(const T* a, size_t size)
{
	assert(a);
	_a.reserve(size);//初始化_a(vector模板的使用)
	for (size_t i = 0; i < size; ++i)
	{
		_a.push_back(a[i]);
	}
	////堆的第一個非葉子結點的數組下標時((size-1)-1)/2(最后一個結點是size-1)
	for (int i = (int)(size - 2) / 2; i >= 0; --i)//不能定義為size_t(無符號)
	{
		_AdjustDown(i);
	}
	//建小堆,類似建大堆的方式,從下向上進行調整堆,使該結點處的左右子樹都滿足小堆
	//在進行調小堆時,也通過下調實現
}
//下調--建大堆/小堆
template<class T>
void Heap<T>::_AdjustDown(size_t Parent)
{
	size_t Child = Parent * 2 + 1;
	while (Child < _a.size())
	{//先進行左右結點的比較,使Child為較大的數的下標,然后與父親結點進行比較,使較大的數據為父親結點
		if (Child + 1 < _a.size() && _a[Child] < _a[Child + 1])//存在右結點再進行比較
		{
			++Child;
		}
		if (_a[Child] > _a[Parent])//如果子結點大于父親結點就交換,否則就要跳出循環
		{
			swap(_a[Child], _a[Parent]);
			Parent = Child;
			Child = Parent * 2 + 1;
		}
		else
		{
			break;
		}
	}
}
//在建立小堆時,只需要將比較條件進行改變就可以實現

在已經是大堆或小堆的堆中加入元素使堆仍為大堆,可通過該元素與它的父結點進行比較

ps:由于插入的元素在數組末尾,故需要通過上調進行比較實現堆的大堆或小堆

template<class T>
void Heap<T>::_AdjustUp(size_t Child)//上調
{
	size_t Parent = (Child - 1) / 2;//結點為Child的父親結點為(Child-1)/2
	while (Child > 0)//當Child等于0時以到堆頂,終止循環
	{
		if (_a[Parent] < _a[Child])//直接進行父親結點和子結點的比較
		{
			swap(_a[Child], _a[Parent]);
			Child = Parent;
			Parent = (Child - 1) / 2;
		}
		else
		{
			break;
		}
	}
}
template<class T>
void Heap<T>::Push(const T& x)//元素x入堆
{
	//_a.resize(_a.size() + 1);
	//_a[_a.size()-1] = x;
	_a.push_back(x);
	_AdjustUp(_a.size() - 1);
}

堆中pop元素,刪除堆頂元素,使堆仍為大堆。

在已經是大堆或小堆的堆中刪除堆頂元素,直接刪除堆頂元素,造成無法進行大堆或小堆的實現,可通過將第一個元素與最后一個元素進行交換,然后刪除最后一個元素,最后通過下調實現大堆或小堆

template<class T>
void Heap<T>::Pop()//出堆
{
	size_t size = _a.size();
	assert(size > 0);//斷言堆非空
	swap(_a[0], _a[size - 1]);
	_a.pop_back();
	_AdjustDown(0);//從堆頂開始進行下調
}

實現堆的堆頂,判空及堆元素個數

template<class T>
T& Heap<T>::GetTop()//訪問堆頂元素
{
	return _a[0];
}
template<class T>
bool Heap<T>::Empty()//判空
{
	return _a.size() == 0;
}
template<class T>
size_t Heap<T>::Size()//堆元素個數
{
	return _a.size();
}
template<class T>
void Heap<T>::PrintHeap()
{
	for (size_t i = 0; i < _a.size(); ++i)
	{
		cout << _a[i] << " ";
	}
	cout << endl;
}

測試用例

#include"Heap.hpp"
void Test4()
{
	int arr[] = { 10, 16, 18, 12, 11, 13, 15, 17, 14, 19};
	Heap<int> h(arr, sizeof(arr) / sizeof(arr[0]));
	h.PrintHeap();
	cout << "empty: " << h.Empty() << endl;
	cout << "size: " << h.Size() << endl;
	cout << "gettop: " << h.GetTop() << endl;
	h.Push(20);
	h.PrintHeap();
	h.Pop();
	h.PrintHeap();
}

如果對于上述說明還是不是很清楚,可自己親手畫圖分析,存在不足之處請多多指教。

【vector】包含著一系列連續存儲的元素, 其行為和數組類似。訪問Vector中的任意元素或從末尾添加元素都可以在常量級時間復雜度內完成,而查找特定值的元素所處的位置或是在Vector中插入元素則是線性時間復雜度。

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

分享名稱:堆的實現(堆的建立及push、pop元素)-創新互聯
當前網址:http://www.js-pz168.com/article2/docjic.html

成都網站建設公司_創新互聯,為您提供電子商務手機網站建設響應式網站品牌網站設計企業網站制作Google

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
五月激情六月综合| 2014亚洲精品| 国产在线一区二区三区播放| 日韩精品福利视频| 666欧美在线视频| 国产精品久久久久久久久免费樱桃| 午夜天堂影视香蕉久久| 成人午夜激情片| 欧美人与物videos另类| 欧美另类高清zo欧美| 国产精品少妇自拍| 久久精品国产一区二区| 粉嫩av免费一区二区三区| 色综合视频在线观看| 26uuu国产一区二区三区| 亚洲一区在线视频| 成人激情文学综合网| 日本一区视频在线观看免费| 欧美一区二区视频在线观看 | a级高清视频欧美日韩| 欧美一区二区三区成人久久片 | 精品国产污污免费网站入口| 亚洲自拍欧美精品| 成人av资源网站| 亚洲国产欧美日韩| 久久久久久一二三区| 午夜欧美在线一二页| 91色porny蝌蚪| 在线观看国产日韩| 国产精品福利影院| 国产精品综合一区二区三区| 欧美成ee人免费视频| 日韩视频一区二区| 首页综合国产亚洲丝袜| 成人三级视频在线观看一区二区| 欧洲国内综合视频| 亚洲视频一区二区免费在线观看| 国产精品99久久久久| 亚洲国产精品久久久久婷婷老年| 久久久91精品国产一区二区精品| 久久精品国产99久久6| 久久亚洲综合网| 精品欧美一区二区三区精品久久| 亚洲成a天堂v人片| 国产成人av一区二区三区| 欧美精品一卡两卡| 亚洲成人先锋电影| 国产经典一区二区三区| 91精品欧美综合在线观看最新| 亚洲图片欧美视频| 成人在线视频电影| 欧美一区二区视频在线观看2022| 午夜电影网亚洲视频| 精品国产一二| 久久婷婷综合激情| 九九九精品视频| 午夜免费电影一区在线观看| 中文字幕精品综合| 成人动漫视频在线| 欧美午夜电影网| 亚洲午夜精品在线| 国内精品二区| 久久夜色精品国产噜噜av| 韩国毛片一区二区三区| 一区二区国产日产| 亚洲激情在线播放| caoporen国产精品| 欧美不卡一区二区三区四区| 免费成人在线观看视频| 日本欧美精品久久久| 国产精品久久夜| 91久色国产| 精品国产乱码久久| 国产不卡免费视频| 欧美日韩激情在线| 秋霞电影一区二区| 亚洲欧美精品| 亚洲一区二区三区四区不卡| 精品久久蜜桃| 国产精品无遮挡| 91碰在线视频| 亚洲精品一线二线三线无人区| 国产精品123| 欧美电影影音先锋| 久久精品国产免费| 日本高清不卡aⅴ免费网站| 亚洲超丰满肉感bbw| 欧洲av一区| 亚洲精品第一国产综合野| 久久精品女人的天堂av| 国产精品天美传媒沈樵| 成人动漫在线视频| 久久免费国产精品| 91小视频在线| 久久这里只有精品6| 99久久精品免费| 26uuu亚洲婷婷狠狠天堂| www..com久久爱| 精品国免费一区二区三区| 国产91对白在线观看九色| 制服丝袜亚洲色图| 国产福利一区二区| 3751色影院一区二区三区| 国产真实精品久久二三区| 欧美日韩国产免费| 国产精品一二三四区| 91精品中文字幕一区二区三区| 国产露脸91国语对白| 欧美一区二区三区啪啪| 国产 欧美在线| 精品捆绑美女sm三区| av一区二区不卡| 国产午夜亚洲精品理论片色戒| 91精品久久香蕉国产线看观看| 国产三级一区二区| 国产精品jizz视频| 综合色天天鬼久久鬼色| 欧美凹凸一区二区三区视频| 亚洲综合另类小说| 亚洲永久一区二区三区在线| 人人超碰91尤物精品国产| 欧美唯美清纯偷拍| 国产精品1区二区.| 精品噜噜噜噜久久久久久久久试看| 91亚洲精华国产精华精华液| 国产欧美一区二区精品秋霞影院| 国产精品欧美久久| 亚洲精品免费一二三区| 亚洲精品一区二区三| 美国欧美日韩国产在线播放 | 久久99国产精品免费| 在线成人小视频| 99久久婷婷国产| 中文字幕亚洲区| 日韩aⅴ视频一区二区三区| 手机精品视频在线观看| 在线看国产一区二区| 国产精品1区2区3区在线观看| 精品91自产拍在线观看一区| 国产视频一区二区不卡| 亚洲综合一区二区| 在线视频你懂得一区| 高清在线观看日韩| 欧美高清在线视频| 日韩电影免费观看高清完整| 免费精品视频在线| 日韩欧美国产1| 国产一区高清视频| 偷窥少妇高潮呻吟av久久免费| 欧美日韩精品一区视频| 99精品国产99久久久久久白柏| 17c精品麻豆一区二区免费| 亚洲在线视频一区二区| 国产乱码精品一区二区三| 国产亚洲精品aa| 日韩欧美电影一区二区| 精品一区二区三区香蕉蜜桃| 久久在线观看免费| 欧美一级爱爱| 国产一区二区三区精品欧美日韩一区二区三区 | 17c精品麻豆一区二区免费| 色诱亚洲精品久久久久久| 国产91精品免费| 国产精品国产三级国产aⅴ中文 | 国产原创精品| 日韩电影在线观看一区| 日韩欧美中文字幕制服| 精品欧美一区二区在线观看视频 | 亚洲sss视频在线视频| 91精品国产色综合久久不卡电影| 中文av一区二区| 亚洲精品国产精品久久 | 欧美精品久久一区| 成人欧美一区二区三区在线观看 | 欧洲视频一区二区| 91丝袜美腿高跟国产极品老师 | 国产亚洲欧美在线| 亚洲欧美日韩国产yyy| 国产不卡高清在线观看视频| 日韩理论片一区二区| 欧美日韩免费高清一区色橹橹 | 国产精品久久久久久久久久久免费看 | 欧美一级日韩不卡播放免费| 久久免费一区| 国产一区二区三区日韩| 中文字幕日韩一区二区| 欧美日韩一级二级三级| 国产精品亚洲不卡a| 毛片一区二区三区| 国产精品情趣视频| 欧美色成人综合| 精品久久蜜桃| 国产美女在线精品| 亚洲伦理在线精品| 欧美一区二区免费视频| 欧美连裤袜在线视频| 成人午夜又粗又硬又大| 亚洲国产中文字幕| 久久亚洲综合色一区二区三区| 亚洲精品乱码久久久久久蜜桃91|