c++ - Which is the fastest algorthm for selecting kth largest number in an unsorted array containing non -unique elements? -


संभव डुप्लिकेट:

तत्वों की संख्या 1 से 10 लाख तक भिन्न हो सकती है। इस उद्देश्य के लिए उपलब्ध सबसे तेज़ चयन एल्गोरिदम कौन सा है? कृपया ध्यान दें मुझे लगता है कि एवीएल पेड़ जैसी डेटा संरचनाएं सरणी तत्वों की दोहराव के कारण काम नहीं करेंगी?

ए हे (एन) समय में चला सकता है।

सरणी के माध्यम से एक पास बनाने का सबसे सामान्य तरीका है, अब तक के सबसे बड़े नंबरों को देखते हुए रखें। उस सूची के अंतिम तत्व लौटें @ चेसिया के रूप में std :: nth_element (दस्तावेज) इस दृष्टिकोण का उपयोग करने का सबसे तेज़ तरीका है।

यदि आपको हमेशा सबसे ऊपर का सबसे बड़ा आइटम (और डेटा कभी-कभी बदल जाता है), फिर डेटा को एक में संग्रहीत करने पर विचार करें। यह अधिक महंगा है, लेकिन आपको डेटा की "लाइव" संरचना देता है।

Comments