मैं अपनी परियोजनाओं में लिंक और लैम्ब्डा ऑपरेशंस का उपयोग कर रहा हूं और मुझे कक्षा के दो गुणों के अनुसार सूची को क्रमबद्ध करने की आवश्यकता है। इसलिए, मैं इस्तेमाल किया OrderBy() ThenBy() के रूप में नीचे दी गई विधियों:।लिंक ऑर्डरबी() के समय की जटिलता क्या है। फिर() विधि अनुक्रम?
class ValueWithIndex{
public long Value;
public int Index;
}
...
List<ValueWithIndex> valuesWithIndex = new List<ValueWithIndex>();
for (int i = 0; i < A.Length; i++){
ValueWithIndex vi = new ValueWithIndex();
vi.Value = A[i];
vi.Index = i;
valuesWithIndex.Add(vi);
}
var orderedValues = valuesWithIndex.OrderBy(v => v.Value).ThenBy(v => v.Index);
...
This जवाब में, यह समझाया गया है कि, OrderBy() quicksort का उपयोग करता है, तो भले ही यह हे है (N * logn) औसत समय जटिलता, सबसे खराब मामले के लिए, समय जटिलता ओ (एन) के आसपास है। यदि ThenBy() विधि में ओ (एन) की सबसे खराब समय जटिलता है, तो इन तरीकों का उपयोग करना व्यर्थ होगा।
क्या है() विधि Quicksort का भी उपयोग करती है? यदि हां, तो इसका मतलब यह है कि उसी "v.Value" के लिए, "v.Index" es को O (N) के साथ क्रमबद्ध किया गया है? सबसे खराब समय जटिलता?
यह 'ओ (1)' है क्योंकि केवल क्वेरी बनाने में, इसे निष्पादित नहीं किया जाता है। क्वेरी के निष्पादित होने पर भी 'ThenBy' अतिरिक्त ऑर्डरिंग नहीं करता है, यह पहले से ही कतारबद्ध ऑर्डरिंग स्थिति को संशोधित करता है। – PetSerAl
आप इसे 'ओ (1)' नहीं कह सकते क्योंकि इसकी भिन्न निष्पादन। जब आपको इसकी आवश्यकता होती है तो उस समय आप इसका उपयोग करते हैं और इसका 'ओ (nlogn) ' –
@ एम.केज़ेम अख़री मुझे नहीं लगता कि यह एक बुरा जवाब है (ओ (1) कहने के लिए) ओपी ने यह नहीं दिखाया है कि वह क्या करता है 'आदेश दिया गया' के साथ। – Phil1970