亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

詳解基于堆的基本操作

2020-02-24 14:32:14
字體:
來源:轉載
供稿:網友

  我們想的數據結構是可以支持插入操作并可以方便取出具有最小或最大關鍵碼的記錄,而堆是最高效的一種數據結構,現在我們就跟武林小編一起詳解基于堆的基本操作吧。
  最小堆:任一結點的關鍵碼均小于或等于它的左右子女的關鍵碼,位于堆頂的結點的關鍵碼是整個元素集合的最小的,所以稱它為最小堆。最大堆類似定義。

  創建堆:采用從下向上逐步調整形成堆得方法來創建堆。為下面的分支結點調用下調算法siftDown,將以它們為根的子樹調整為最小堆。從局部到整體,將最小堆逐步擴大,直到將整個樹調整為最小堆。

  插入一個元素:最小堆的插入算法調用了另一種堆得調整方法siftUp,實現自下而上的上滑調整。因為每次新結點總是插在已經建成的最小堆后面,這時必須遵守與sift相反的比較路徑,從下向上,與父結點的關鍵碼進行比較,對調。

  刪除一個元素:從最小堆刪除具有最小關鍵碼記錄的操作時將最小堆的堆頂元素,即其完全二叉樹的順序表示的第0號元素刪去,去把這個元素取走后,一般以堆得最后一個結點填補取走的堆頂元素,并將堆的實際元素個數減1.但是用最后一個元素取代堆頂元素將破壞堆,需要調用siftDown算法進行調整堆。

本文代碼均以最小堆的實現為例。

?

#include<iostream>
#include<assert.h>
usingnamespace std;

?

constint maxheapsize=100;
staticint currentsize=0;

//從上到下調整堆
void siftDown(int* heap,int currentPos,int m)
{
??? int i=currentPos;
??? int j=currentPos*2+1;//i's leftChild
int temp=heap[i];
??? while(j<=m)
??? {
??????? if(j<m&&heap[j]>heap[j+1]) j++;// j points to minChild
if(temp<=heap[j]) break;
??????? else
??????? {
??????????? heap[i]=heap[j];
??????????? i=j;
??????????? j=2*i+1;
??????? }
??? }
??? heap[i]=temp;
}

//從下向上調整堆
void siftUp(int* heap, int start)
{
??? int i=start,j=(i-1)/2;
??? int temp=heap[i];

??? while(i>0)
??? {
??????? if(heap[j]>temp)
??????? {
??????????? heap[i]=heap[j];
??????????? i=j;
??????????? j=(i-1)/2;
??????? }
??????? elsebreak;
??? }
??? heap[i]=temp;
}

//構建堆
int* Heap(int*arr, int size)
{
??? int i;
??? currentsize=size;
??? int* heap =newint[maxheapsize];
??? assert(heap!=NULL);
??? for(i=0;i<currentsize;i++) heap[i]=arr[i];
??? int currentPos=(currentsize-2)/2;
??? while(currentPos>=0)
??? {
??????? siftDown(heap,currentPos,currentsize-1);
??????? currentPos--;
??? }
??? return heap;
}


//增加一個元素
void insert(int* heap,int value)
{
??? if(currentsize>=maxheapsize)
??? {
??????? cout<<"Heap is full!"<<endl;
??????? return ;
??? }
??? heap[currentsize]=value;
??? siftUp(heap,currentsize);
??? currentsize++;
}

//刪除一個元素,并返回刪除前的堆頂元素
int removemin(int* heap)
{
??? assert(currentsize>=0);
??? int removeValue=heap[0];
??? heap[0]=heap[currentsize-1];
??? currentsize--;
??? siftDown(heap,0,currentsize-1);
??? return removeValue;
}

int main()
{
??? constint size=10;
??? int arr[size]={2,1,3,0,8,1,6,9,7,10};
??? int* heap=Heap(arr,size);
??? //堆排序
for(int i=0;i<size;i++)
??? {
??????? arr[i]=removemin(heap);
??????? cout<<arr[i]<<endl;
??? }
??? delete []heap;
??? return0;

?
?

}

  以上就是武林小編為你詳解基于堆的基本操作,希望大家喜歡,更多相關內容請繼續關注武林技術頻道

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
伊人伊成久久人综合网小说| 亚洲国产中文字幕在线观看| 精品久久久久久中文字幕一区奶水| 日韩成人在线视频网站| 久久精品这里热有精品| 国产一区二区激情| 国产精品美女久久久久久免费| 国产国语刺激对白av不卡| 91精品国产综合久久香蕉最新版| 久久伊人91精品综合网站| 91久久嫩草影院一区二区| 日韩在线精品视频| 中文字幕亚洲一区在线观看| 精品女同一区二区三区在线播放| 国产午夜精品免费一区二区三区| 国产精品丝袜久久久久久高清| 久久视频国产精品免费视频在线| 国产精品天天狠天天看| www国产亚洲精品久久网站| 欧美人成在线视频| 91亚洲精品久久久| 日韩中文娱乐网| 久久九九亚洲综合| 日韩av免费在线播放| 国产精品久久久久久久app| 久久久国产成人精品| 欧美黑人极品猛少妇色xxxxx| 亚洲午夜精品久久久久久性色| 国产在线观看精品一区二区三区| 精品亚洲一区二区三区在线观看| 国产91久久婷婷一区二区| 亚洲高清在线观看| 久久精品影视伊人网| 成人黄色片在线| 欧美性猛交xxxx乱大交| 日韩网站在线观看| 亚洲国产精品成人一区二区| 美日韩丰满少妇在线观看| 国产精品美女久久| 亚洲日韩第一页| 成人在线观看视频网站| 亚洲色图25p| 日韩中文字幕免费| 在线免费观看羞羞视频一区二区| 久久精品中文字幕免费mv| 欧洲成人免费视频| 欧美乱妇高清无乱码| 美女扒开尿口让男人操亚洲视频网站| 精品久久久久久国产91| 久久福利视频网| 性欧美xxxx| 欧美在线视频在线播放完整版免费观看| 亚洲人成在线观看网站高清| 国产成人精品亚洲精品| 国产97免费视| 日韩在线视频中文字幕| 日本成人免费在线| 亚洲第一区中文99精品| 欧美性受xxxx白人性爽| 欧美亚洲免费电影| 午夜美女久久久久爽久久| 成人国产在线视频| 国产欧美精品va在线观看| 欧美精品一区在线播放| 伊人久久久久久久久久久久久| 国产精品久久久久久久久久久不卡| 亚洲第一色中文字幕| www国产亚洲精品久久网站| 亚洲精品中文字幕有码专区| 久久在线免费观看视频| 日韩精品中文在线观看| 国产日韩中文字幕在线| 91在线精品视频| 韩国日本不卡在线| 久久手机免费视频| 欧美孕妇孕交黑巨大网站| 欧美激情综合亚洲一二区| 日本高清视频精品| 欧美床上激情在线观看| 成人a视频在线观看| 欧美日韩免费观看中文| 国产精品国产三级国产aⅴ9色| 欧美极品少妇xxxxⅹ喷水| 亚洲一区www| 亚洲伊人久久综合| 国产精品美女主播在线观看纯欲| 国产精品2018| 国产女人18毛片水18精品| 91九色在线视频| 一本色道久久综合狠狠躁篇怎么玩| 欧美在线视频在线播放完整版免费观看| 91国产在线精品| 亚洲人成电影网站色xx| 欧美亚洲伦理www| 久久影视电视剧免费网站| 操91在线视频| 亚洲91精品在线观看| 成人看片人aa| 一区二区三区无码高清视频| 国产精品视频1区| 高清日韩电视剧大全免费播放在线观看| 国产精品第2页| 最近中文字幕2019免费| 国产精品久久久久久av下载红粉| 亚洲偷欧美偷国内偷| 日韩欧美aⅴ综合网站发布| 成人免费淫片视频软件| 国产z一区二区三区| 色综久久综合桃花网| 亚洲精品视频在线观看视频| 亚洲欧美综合精品久久成人| 亚洲欧美日韩精品久久亚洲区| 丁香五六月婷婷久久激情| 国产精品美女www爽爽爽视频| 国产亚洲美女久久| 亚洲免费视频在线观看| 97久久久免费福利网址| 亚洲欧美一区二区激情| 亚洲激情视频在线| 91在线精品播放| 亚洲福利视频在线| www.国产精品一二区| www日韩中文字幕在线看| 欧美劲爆第一页| 国产一区深夜福利| 欧美成人激情在线| 91亚洲精华国产精华| 97视频在线观看亚洲| 欧美一级bbbbb性bbbb喷潮片| 91大神福利视频在线| 午夜精品视频网站| 亚洲精品久久久久中文字幕二区| 亚洲欧美一区二区精品久久久| 日韩中文字幕免费视频| 久久99久国产精品黄毛片入口| 色播久久人人爽人人爽人人片视av| 成人午夜激情网| 色妞久久福利网| 91地址最新发布| 国产精品久久9| 国产精品视频色| 97成人精品视频在线观看| 亚洲国产成人久久综合一区| 日韩av免费在线| 日日摸夜夜添一区| 亚洲国产精品免费| 欧美一级成年大片在线观看| 国产在线不卡精品| 在线观看欧美日韩| 国产精品久久久久久久美男| 亚洲free性xxxx护士hd| 色先锋资源久久综合5566| 日韩欧美福利视频| 亚洲黄一区二区| 国产在线精品一区免费香蕉| 91精品一区二区| 成人a视频在线观看| 热99精品里视频精品| 久久综合久久八八| 国产精品wwwwww| 91av在线播放| 欧美激情一区二区三区成人| 国产成人aa精品一区在线播放| 亚洲专区在线视频|