绾㈤粦鏍戠殑鏌ヨ鏁堢巼锛欳++瀹炰緥鍒嗘瀽
绾㈤粦鏍戞槸涓€绉嶈嚜骞宠 鐨勪簩鍙夋悳绱㈡爲锛屽叾鏌ヨ鏁堢巼闈炲父楂橈紝鏃堕棿澶嶆潅搴︿负O(log n)锛屽叾涓璶涓烘爲涓妭鐐圭殑涓暟銆備笅闈㈤€氳繃涓€涓狢++瀹炰緥鏉ユ紨绀虹孩榛戞爲鐨勬煡璇㈡晥鐜囥€?/p>
#include <iostream>
#include <map>
#include <chrono>
int main() {
std::map<int, int> rb_tree; // 鍒涘缓涓€涓孩榛戞爲
// 鍚戠孩榛戞爲涓彃鍏?000000涓殢鏈烘暟
for (int i = 0; i < 1000000; ++i) {
rb_tree.insert(std::pair<int, int>(i, i));
}
// 鏌ヨ绾㈤粦鏍戜腑鐨勪竴涓厓绱?/span>
int target = 500000;
auto start = std::chrono::high_resolution_clock::now();
auto it = rb_tree.find(target);
auto end = std::chrono::high_resolution_clock::now();
if (it != rb_tree.end()) {
std::cout << "Found element " << it->first << " in red-black tree." << std::endl;
} else {
std::cout << "Element not found in red-black tree." << std::endl;
}
// 杈撳嚭鏌ヨ鑰楁椂
auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
std::cout << "Query time: " << duration.count() << " microseconds" << std::endl;
return 0;
}
鍦ㄤ笂闈㈢殑浠g爜涓紝鎴戜滑棣栧厛鍒涘缓浜嗕竴涓寘鍚?000000涓殢鏈烘暟鐨勭孩榛戞爲銆傜劧鍚庢垜浠湪绾㈤粦鏍戜腑鏌ヨ涓€涓壒瀹氱殑鍏冪礌锛堣繖閲屾槸500000锛夛紝骞惰緭鍑烘煡璇㈢粨鏋滃拰鑰楁椂銆?/p>
閫氳繃杩愯涓婇潰鐨勪唬鐮侊紝鍙互鐪嬪埌绾㈤粦鏍戝湪鏌ヨ鎿嶄綔涓殑楂樻晥鎬э紝鏌ヨ鑰楁椂閫氬父寰堢煭銆傝繖鏄洜涓虹孩榛戞爲鐨勮嚜骞宠 鎬ц川鍙互纭繚鏍戠殑楂樺害濮嬬粓淇濇寔鍦ㄤ竴涓緝灏忕殑鑼冨洿鍐咃紝浠庤€屼繚璇佷簡楂樻晥鐨勬煡璇㈡搷浣溿€傚洜姝わ紝绾㈤粦鏍戞槸涓€绉嶉潪甯搁珮鏁堢殑鏁版嵁缁撴瀯锛岄€傜敤浜庨渶瑕侀绻佹煡璇㈢殑鍦烘櫙銆?/p>
相关问答