堆排序

https://tool.lu/coderunner/

#include <iostream>

#include <vector>

#include <stdlib.h>

using namespace std;

void shiftDown(vector<int> &nums, int index) {? // 建堆的過程中下沉

int left = index*2+1;

int right = index*2+2;

while(index < nums.size()) {

if(nums[index] >= max(nums[left], nums[right])) return;

if(nums[left] > nums[right]) {

swap(nums[index], nums[left]);

index = left;

}

else {

swap(nums[index], nums[right]);

index = right;

}

left = index*2+1;

right = index*2+2;

}

}

void shiftUp(vector<int> &nums) { // 在末尾插入一個元素后伪窖, 進行上浮操作

if(nums.size() == 0) return;

int index = nums.size()-1;

while(index >= 0) {

int parent = (index - 1)/2;

if(nums[parent] >= nums[index]) return;

swap(nums[parent], nums[index]);

index = parent;

}

}

void buildHeap(vector<int> &nums) {? // 建堆

for(int i = nums.size()/2; i>=0; i--) {

shiftDown(nums, i);

}

}

void fakeData(vector<int> &nums, int n) {

for(int i =0; i<n; i++) {

nums.push_back(rand()%1000);

}

}

void printVec(const vector<int> &nums) {

for(int i=0;i<nums.size(); i++) {

cout<<nums[i]<<" ";

}

cout<<endl;

}

int main() {

vector<int> nums;

fakeData(nums, 3);

printVec(nums);

buildHeap(nums);

printVec(nums);

nums.push_back(rand()%1000);

shiftUp(nums);

printVec(nums);

return 0;

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末谒主,一起剝皮案震驚了整個濱河市铅歼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件憔涉,死亡現(xiàn)場離奇詭異,居然都是意外死亡析苫,警方通過查閱死者的電腦和手機兜叨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門穿扳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人国旷,你說我怎么就攤上這事矛物。” “怎么了跪但?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵履羞,是天一觀的道長。 經常有香客問我屡久,道長忆首,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任被环,我火速辦了婚禮糙及,結果婚禮上,老公的妹妹穿的比我還像新娘筛欢。我一直安慰自己浸锨,他們只是感情好,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布版姑。 她就那樣靜靜地躺著柱搜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪漠酿。 梳的紋絲不亂的頭發(fā)上冯凹,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音炒嘲,去河邊找鬼宇姚。 笑死,一個胖子當著我的面吹牛夫凸,可吹牛的內容都是我干的浑劳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼夭拌,長吁一口氣:“原來是場噩夢啊……” “哼魔熏!你這毒婦竟也來了?” 一聲冷哼從身側響起鸽扁,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蒜绽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后桶现,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體躲雅,經...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年骡和,在試婚紗的時候發(fā)現(xiàn)自己被綠了相赁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片相寇。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖钮科,靈堂內的尸體忽然破棺而出唤衫,到底是詐尸還是另有隱情,我是刑警寧澤绵脯,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布佳励,位于F島的核電站,受9級特大地震影響桨嫁,放射性物質發(fā)生泄漏植兰。R本人自食惡果不足惜份帐,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一璃吧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧废境,春花似錦畜挨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至驮宴,卻和暖如春逮刨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背堵泽。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工修己, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人迎罗。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓睬愤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親纹安。 傳聞我的和親對象是個殘疾皇子尤辱,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內容

  • 堆是一棵滿足一定性質的二叉樹,具體的講堆具有如下性質:父節(jié)點的鍵值總是不大于它的孩子節(jié)點的鍵值(小頂堆), 堆可以...
    9527Roy閱讀 631評論 0 0
  • <center>#1 Two Sum</center> link Description:Given an arr...
    鐺鐺鐺clark閱讀 2,154評論 0 3
  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗厢岂。 張土汪:刷leetcod...
    土汪閱讀 12,745評論 0 33
  • (二叉)堆數(shù)據(jù)結構是一種數(shù)組對象光督,可被視為一顆完全二叉樹,假設給定某個節(jié)點的下標i塔粒,則其父節(jié)點Parent(i)结借,...
    wsdadan閱讀 361評論 0 0
  • 嘰嘰嘰嘰里哈
    飛過海_0729閱讀 157評論 0 0