亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計數反轉算法中的錯誤

計數反轉算法中的錯誤

HUWWW 2023-03-16 16:08:41
我正在嘗試編寫一種算法來計算數組中的反轉次數。反轉是 A[i] > A[j] 和 i < j。def sort_and_count(L):    if len(L)<2:        return 0, L    else:        A = L[:len(L)//2]        B = L[len(L)//2:]        rA, A = sort_and_count(A)        rB, B = sort_and_count(B)        r, L = merge_and_count(A,B)    return r+rB+rA, Ldef merge_and_count(A,B):    i = j = 0    count = 0    L = []    while len(A) > i and len(B) > j:        if A[i] <= B[j]:            L.append(A[i])            i+=1        else:            L.append(B[j])            count = count + (len(A)-1)            j+=1    #copy the remaining elements    for index in range(i,len(A)):        L.append(A[index])    for index in range(j,len(B)):        L.append(B[index])    return count, Lsort_and_count(A)[0]算法不正確。對于這個輸入 A = [7, 3, 20, 16, 5, 8] 它返回 6。正確答案是 7 (7, 3),(7, 5),(20, 16),(20, 5) ,(20, 8),(16, 5),(16, 8)。對于某些輸入,答案是正確的。我不確定是什么原因造成的。
查看完整描述

1 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

我希望我知道它給出正確結果的輸入是什么。你有一個錯字:len(A) - 1應該是len(A) - i。



查看完整回答
反對 回復 2023-03-16
  • 1 回答
  • 0 關注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號