問題是下面簡要說明:
鑑於Ñ整數的數組A中,在每個元件陣列可以增加一個固定的數字b有一些概率 p [ i],0 < = i < n。我必須找到將使用bubble sort排序陣列的預期交換次數。
我已嘗試以下步驟:
1)的元素A [我]> A [Ĵ用於我 < Ĵ可以很容易地從給定的計算出的概率概率。 2)使用上述的我已經計算互換的預期數量爲:
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.
基本上我來到這個想法,因爲互換的預期數量可以由所述陣列的反轉的數目來計算。因此,通過利用給定的概率,我正在計算一個數字A []將與數字A交換。[j]。
我已經發布了a similar question之前,但它沒有所有的限制。
我沒有得到任何好的提示,無論我是否在正確的軌道上,所以我列出了所有的限制。如果我以不正確的方式思考問題,請給我一些提示。
你也可以進行氣泡排序並計算實際交換次數;)無論如何,你說「數組中的每個元素都可以用某個概率p [i]增加一個固定數值'b'。這是什麼時候發生的?在每個交換?在排序之前? – SingerOfTheFall
這發生在數組排序之前。我認爲執行冒泡排序會使程序真的很慢,因爲它增加了複雜性,我將不得不爲數組的每個可能的配置運行它。 – TheRock
你真的認爲如果這是一個編程問題?這聽起來像是紙上的問題。如果你正在編寫一個程序並找到這個期望的數字,那麼這有什麼實際用途? – PermanentGuest