[英]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.