Diberikan array dari bilangan bulat N , setiap elemen dalam array dapat ditingkatkan dengan angka tetap b dengan beberapa probabilitas p [ i ] , 0 ≤ i < n . Saya harus menemukan jumlah swap yang diharapkan yang akan terjadi untuk mengurutkan array menggunakan bubble sort .
Saya sudah mencoba yang berikut ini:
Probabilitas untuk elemen untuk i < j dapat dihitung dengan mudah dari probabilitas yang diberikan.
Dengan menggunakan di atas, saya telah menghitung jumlah swap yang diharapkan sebagai:
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.
Pada dasarnya saya sampai pada ide ini karena jumlah swap yang diharapkan dapat dihitung dengan jumlah inversi array. Jadi dengan memanfaatkan probabilitas yang diberikan saya menghitung apakah nomor akan ditukar dengan nomor A [ j ] .
Perhatikan bahwa elemen array awal dapat dalam urutan apa pun, diurutkan atau tidak disortir. Kemudian setiap angka dapat berubah dengan beberapa probabilitas. Setelah ini saya harus menghitung jumlah swap yang diharapkan.
Saya telah memposting pertanyaan serupa sebelumnya tetapi tidak memiliki semua kendala.
Saya tidak mendapatkan petunjuk yang baik apakah saya berada di jalur yang benar atau tidak, jadi saya mendaftarkan semua kendala di sini. Tolong beri saya beberapa petunjuk jika saya memikirkan masalah dengan cara yang salah.