यह पूरी तरह से मेरे अपने ज्ञान के लिए है, अगर मैं कोड लिखने जा रहा हूं तो मैं केवल .Max()
का उपयोग करूंगा।मैक्स() बनाम ऑर्डरबैडस्केंडिंग()। पहला()
पहले विचार पर .Max()
को अधिकतम खोजने के लिए केवल numbers
के माध्यम से एक ही पास करना होगा, जबकि दूसरी तरफ पूरी चीज को समेकित करना होगा, फिर पहले को ढूंढें। तो यह O(n)
बनाम O(n lg n)
है। लेकिन फिर मैं सोच रहा था कि शायद यह जानता है कि इसे केवल उच्चतम की जरूरत है और बस इसे पकड़ लेता है।
प्रश्न: है LINQ और/या संकलक बहुत चालाक यह पता लगाने की है कि यह पूरे गणनीय सॉर्ट करने के लिए और() की जरूरत नहीं है .max के रूप में मूलतः एक ही करने के लिए नीचे कोड फोड़े? क्या पता लगाने के लिए एक मात्रात्मक तरीका है?
IEnumerable<int> numbers = Enumerable.Range(1, 1000);
int max = numbers.Max();
int max2 = numbers.OrderByDescending(x => x).First();
अच्छा बिंदु के आसपास में कोड! +1 –