簡體   English   中英

中的make_heap()函數算法<algorithm>

[英]algorithm of make_heap() function in <algorithm>

我只是在使用C ++中的make_heap()函數進行實驗。 以下是我每次打印bool predicate()時都要比較的元素的代碼,通過打印它們來跟蹤它們。

#include <iostream>
#include <algorithm>
using namespace std;

// bool predicate function to make a min heap
bool predicate(int a, int b){
    cout << a << "  " << b << endl;
    if(a >= b){ return 1; }
    return 0;
}


int main(){
    int arr[] = {3,2,1,-1,-2};
    make_heap(arr, arr+5, predicate);
    return 0;
}

我得到的輸出是:
-2 -1
-2 2
1 -2
2 -1
-1 3

但是我期待以下輸出,同時注意標准算法:
-2 -1
-2 2
1 -2
3 -2
2 -1
-1 3

有什么幫助嗎?

我不會說有一種足夠標准化的算法,因此您希望執行一組特定的比較。 什么標准化是算法的復雜度,並且只要比較的數量是線性順序的,你應該是好去。 而且,在比較次數方面, stl似乎比您更好。因此,您不必擔心。

如注釋中所建議,您始終可以閱讀編譯器使用的std::make_heap實現的代碼,但不能保證在stl所有實現中都將使用相同的實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM