tamsayılarından oluşan dizisi verildiğinde, dizideki her öğe, bazı olasılıklar , olan sabit bir sayı ile arttırılabilir . Kabarcık sıralaması kullanarak diziyi sıralamak için gerçekleşecek takas beklenen sayısını bulmak zorunda .
Aşağıdakileri denedim:
Bir öğe için olasılık için verilen olasılıklar kolayca hesaplanabilir.
Yukarıdakileri kullanarak, beklenen takas sayısını şu şekilde hesapladım:
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.
Temelde bu fikre geldim çünkü beklenen takas sayısı dizinin ters çevrilme sayısı ile hesaplanabilir. Dolayısıyla, verilen olasılıktan yararlanarak sayısının sayısıyla değiştirilip değiştirilmeyeceğini hesaplıyorum .
İlk dizi öğelerinin herhangi bir sırada olabileceğini, sıralanabileceğini veya ayrılmayabileceğini unutmayın. Sonra her sayı bir olasılıkla değişebilir. Bundan sonra beklenen takas sayısını hesaplamalıyım.
Daha önce benzer bir soru yayınladım ama tüm kısıtlamaları yoktu.
Doğru yolda olup olmadığım konusunda iyi ipuçları alamadım, bu yüzden tüm kısıtlamaları burada listeledim. Sorunu yanlış bir şekilde düşünürsem lütfen bana bazı ipuçları verin.