समाधान O(N)
है और किसी भी पथरी प्रदर्शन करने के लिए कोई जरूरत नहीं है, हालांकि यह वक्र के आकार को समझने के लिए मदद करता है।
जवाब ऊपर सबसे सहज बात कर और समीकरण को हल न्यूनतम या अधिकतम खोजने के लिए और फिर सूची विभाजित कर रहे हैं।
पहले व्युत्पन्न की गणना करने में एक फायदा है लेकिन वास्तव में ऐसा करने की आवश्यकता नहीं है, और न ही हमें इस समय अधिकतम या न्यूनतम बिंदु खोजने की आवश्यकता है।
बस पता है कि यह एक ही दिशा में तो दूसरी दिशा में वापस ले जाने के कर सकते हैं और लेकिन दिशा एक बार से अधिक कभी नहीं बदलेगा।
हम प्रत्येक तरफ से शुरू होने जा रहे हैं और दोनों तरफ से फिर से भरने जा रहे हैं जब तक कि हम बीच में कहीं भी विलय न करें। कुछ और करने से पहले हमें प्रत्येक छोर पर दिशा की जांच करने की ज़रूरत है, जिसे हम केवल दो तत्वों की तुलना करके करेंगे। तो हम देखते हैं कि एक अंत ऊपर की तरफ बढ़ रहा है और दूसरा नीचे है।
अगर हम N
तत्व का कहना है कि हम डेटा X[0]
और X[N-1]
तो f(X[0])
और f(X[N-1])
और f(X[1])
और f(X[N-2])
गणना डालते हैं। यदि f(X[0]) < f(X[1])
और f(X[N-1]) > f(X[N-2])
तो वास्तव में हमारा सभी डेटा अधिकतम/न्यूनतम का एक पक्ष है और इस प्रकार पहले से ही क्रमबद्ध है। वही अगर तुलना दूसरी दिशा में हैं।(एक दिशा को रिवर्स की आवश्यकता हो सकती है)।
अन्यथा सिर्फ दोनों सिरों से मर्ज है, इस प्रकार f(X[0])
और f(X[N-1])
या तो मॅक्सिमा या उनके उप पर्वतमाला की न्यूनतम (जैसा कि हम पहले की तुलना से जानते हैं) कर रहे हैं और मर्ज किए गए सूची जो भी से उचित दिशा है बनाएँ।
अपने डेटा के लिए आवेदन:
-1 0 1 2 3 4
A = -1, B = 2, C = -1`
f = [ -4, -1, 0, -1, -4, -9 ]
-4 < -1
और -9 < -4
तो हम बिंदु को पार करते हैं और हम प्रत्येक के अंत में न्यूनतम है।
-9 is lower than -4
-4 and -4 are equal so push both
-1 and -1 are equal so push both
0 remains.
our sequence is [-9, -4, -4, -1, -1, 0 ]
आपकी विधि 'n लॉग n' है। – jason
ओ (लॉगएन) समय में क्रमबद्ध ?? नहीं कर सकता, ओ (एन * लॉगएन) समय होना चाहिए ... यह गणितीय साबित हुआ है कि आप O (NLogN) –
से कम में यादृच्छिक संख्या संग्रह को सॉर्ट नहीं कर सकते हैं, वह ओ (एन) समाधान की अपेक्षा कर रहा था। – harishhkamat