पूर्णांकों की एक सरणी को देखते हुए, सरणी के प्रत्येक तत्व को एक निश्चित संख्या द्वारा कुछ प्रायिकता , साथ बढ़ाया जा सकता है । मुझे स्वैप की अपेक्षित संख्या का पता लगाना है जो बुलबुला सॉर्ट का उपयोग करके सरणी को सॉर्ट करने के लिए होगा ।एन बी पी [ मैं ] 0 ≤ मैं < n
मैंने निम्नलिखित कोशिश की है:
लिए एक तत्व लिए संभाव्यता की गणना दी गई संभावनाओं से आसानी से की जा सकती है।i < j
उपरोक्त का उपयोग करते हुए, मैंने स्वैप की अपेक्षित संख्या की गणना इस प्रकार की है:
double ans = 0.0; for ( int i = 0; i < N-1; i++ ){ for ( int j = i+1; j < N; j++ ) { ans += get_prob(A[i], A[j]); // Computes the probability of A[i]>A[j] for i < j.
मूल रूप से मुझे यह विचार आया क्योंकि स्वैप की अपेक्षित संख्या की गणना सरणी के व्युत्क्रमों की संख्या से की जा सकती है। इसलिए दी गई प्रायिकता का उपयोग करके मैं गणना कर रहा हूं कि क्या नंबर को नंबर साथ स्वैप किया जाएगा ।ए [ जे ]
ध्यान दें कि प्रारंभिक सरणी तत्व किसी भी क्रम में, सॉर्ट या अनसोल्ड हो सकते हैं। फिर प्रत्येक संख्या कुछ संभावना के साथ बदल सकती है। इसके बाद मुझे स्वैप की अपेक्षित संख्या की गणना करनी होगी।
मैंने पहले भी इसी तरह का सवाल पोस्ट किया है, लेकिन इसमें तमाम अड़चनें नहीं थीं।
मुझे इस बात पर कोई अच्छा संकेत नहीं मिला कि मैं सही रास्ते पर हूं या नहीं, इसलिए मैंने यहां सभी बाधाओं को सूचीबद्ध किया। कृपया मुझे कुछ संकेत दें यदि मैं गलत तरीके से समस्या के बारे में सोच रहा हूं।