इसके बारे में सोचने का एक वैकल्पिक तरीका यह है कि i
रीसेट होने से पहले अधिकतम मूल्य क्या हो जाता है। यह, जैसा कि यह पता चला है, यह इस कारण से अधिक सरल बनाता A
है कि एल्गोरिथ्म के रन समय को कैसे प्रभावित करता है।
विशेष रूप से, देखें कि जब i
इसका नया अधिकतम मान सेट किया जाता है, तो इसे N कहते हैं, सरणी [A[0], ..., A[N-1]]
को आरोही क्रम में क्रमबद्ध किया जाता है।
तो जब हम A[N]
मिश्रण में तत्व जोड़ते हैं तो क्या होता है ?
गणित:
खैर, यह स्थिति पर फिट बैठता है कहने देता है । फिर हमें , पुनरावृत्तियों को स्थानांतरित करने के लिए इसे , और सामान्य रूप से स्थान पर ले जाने के लिए लूप पुनरावृत्तियों की आवश्यकता होगी (जो मैं निरूपित करूंगा )।pNNstepsN−1N+(N−1)N−2
stepsN(pN)=N+(N−1)+(N−2)+⋯+(pN+1)=12(N(N+1)−pN(pN+1))
यादृच्छिक रूप से क्रमबद्ध सरणी के लिए, प्रत्येक लिए पर समान वितरण लेता है :pN{0,1,…,N}N
E(stepsN(pN))=∑a=1NP(pN=a)stepsN(a)=∑a=1N1N12(N(N+1)−a(a+1))=12(N(N+1)−13(N+1)(N+2))=13(N2−1)=Θ(N2)
इस राशि को तलहबर के सूत्र या तल पर वुल्फराम अल्फा लिंक का उपयोग करके दिखाया जा सकता है।
सभी लिए एक विपरीत सॉर्ट किए गए सरणी, लिए , और हमें मिलता है:pN=0N
stepsN(pN)=12N(N+1)
वास्तव में, किसी भी अन्य मूल्य से अधिक लंबे समय तक ।pN
पहले से ही छांटे गए सरणी के लिए, और , निचले-क्रम की शर्तें प्रासंगिक हो ।pN=NstepsN(pN)=0
कुल समय:
कुल समय प्राप्त करने के लिए, हम सभी पर कदम उठाते हैं । (अगर हम सुपर सावधान हो रहे थे, तो हम स्वैप के साथ-साथ लूप पुनरावृत्तियों को भी देखेंगे, और शुरू और अंत की स्थितियों का ध्यान रखेंगे, लेकिन यह देखने में आसान है कि वे ज्यादातर मामलों में जटिलता में योगदान नहीं करते हैं) ।N
और फिर से, अपेक्षा की रैखिकता और फौलाबर के फॉर्मूला का उपयोग करते हुए:
Expected Total Steps=E(∑N=1nstepsN(pN))=∑N=1nE(stepsN(pN))=Θ(n3)
बेशक, अगर किसी कारण के लिए नहीं है हमेशा (जैसे सरणियों हम पहले से ही बहुत हल कर की जा रही के करीब हैं पर देख रहे हैं के वितरण), तो इस जरूरत नहीं मामला हो। लेकिन इसे प्राप्त करने के लिए पर बहुत विशिष्ट वितरण हैं !stepsN(pN)Θ(N2)pN
प्रासंगिक पढ़ना: