एक बुलबुले के इस छद्म कोड को ध्यान में रखते हुए:
FOR i := 0 TO arraylength(list) STEP 1
switched := false
FOR j := 0 TO arraylength(list)-(i+1) STEP 1
IF list[j] > list[j + 1] THEN
switch(list,j,j+1)
switched := true
ENDIF
NEXT
IF switched = false THEN
break
ENDIF
NEXT
औसत समय-जटिलता का मूल्यांकन करने के लिए मुझे किन मूल विचारों को ध्यान में रखना होगा? मैंने पहले से ही सबसे खराब और सबसे अच्छे मामलों की गणना करने का काम पूरा किया है, लेकिन मैं जानबूझकर फंस गया हूं कि समीकरण बनाने के लिए आंतरिक लूप की औसत जटिलता का मूल्यांकन कैसे किया जाए।
सबसे खराब स्थिति समीकरण है:
जिसमें आंतरिक सिग्मा आंतरिक लूप का प्रतिनिधित्व करता है, और बाहरी सिग्मा बाहरी लूप का प्रतिनिधित्व करता है। मुझे लगता है कि मुझे "अगर-तब-ब्रेक" के कारण दोनों सिग्मा को बदलने की आवश्यकता है, -काउंस, जो बाहरी सिग्मा को प्रभावित कर सकता है, लेकिन आंतरिक लूप में इफ-क्लॉज के कारण भी, जो लूप के दौरान किए गए कार्यों को प्रभावित करेगा (4 क्रियाएं + 1 तुलना अगर सही है, तो सिर्फ 1 तुलना)।
औसत-समय शब्द पर स्पष्टीकरण के लिए: इस छँटाई एल्गोरिथ्म को अलग-अलग सूचियों (समान लंबाई) पर अलग-अलग समय की आवश्यकता होगी, क्योंकि एल्गोरिथ्म को छोरों के माध्यम से / भीतर कम या ज्यादा चरणों की आवश्यकता हो सकती है जब तक कि सूची पूरी तरह से क्रम में न हो। मैं उन दौरों के औसत का मूल्यांकन करने के लिए एक गणितीय (गैर सांख्यिकीय तरीका) खोजने की कोशिश करता हूं।
इसके लिए मैं किसी भी आदेश की उसी संभावना की अपेक्षा करता हूं।