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

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

使用插入排序查找重復項

使用插入排序查找重復項

莫回無 2023-11-09 21:43:47
def find_duplicate(arr):    for i in range(1, len(arr)):        cur = arr[i]        j = i        while j > 0 and arr[j - 1] > cur:            arr[j] = arr[j - 1]            j -= 1        arr[j] = cur        if arr[j-1] == cur:            arr[j] = cur            return f"This is the duplicate {cur}, {arr}"        else:            arr[j] = cur    print("no dupes")    return arrprint(find_duplicate([1,-5,3,4,-10,100,250,-325,100]))當我在數組末尾添加 100 時,它會被排序,重復值顯示為 100 并且數組已正確排序,但是當我在末尾添加負數(例如 -5)作為重復值時,它不會排序-5 但有些人如何理解這個數字是重復的。我究竟做錯了什么?請查看我提到的兩個數組作為輸入:arr = [1,-5,3,4,-10,100,250,-325,100] <- 100 結束arr = [1,-5,3,4,-10,100,250,-325,-5] <- -5 結束print(find_duplicate([1,-5,3,4,-10,100,250,-325,100]))print(find_duplicate([1,-5,3,4,-10,100,250,-325,-5]))# OUTPUT BELOW:This is the duplicate 100, [-325, -10, -5, 1, 3, 4, 100, 100, 250]This is the duplicate -5, [-5, 1, 3, 4, -10, 100, 250, -325, -5]更新:當再次運行這個時print(find_duplicate([1,-5,3,4,-10,100,250,-325,-5,10]))this is the duplicate -5, [-325, -10, -5, -5, 1, 3, 4, 100, 250, 10]似乎它只是不斷附加數字,而不是在找到重復項后對它們進行排序
查看完整描述

1 回答

?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

你的邏輯是正確的,除了return里面的陳述if


def find_duplicate(arr):

    dup = None  # set this to none to act as flag

    for i in range(1, len(arr)):

        cur = arr[i]

        j = i

        while j > 0 and arr[j - 1] > cur:

            arr[j] = arr[j - 1]

            j -= 1

        arr[j] = cur

        if arr[j-1] == cur:

            arr[j] = cur

            dup = cur

        else:

            arr[j] = cur

    if dup is None:  # check if a duplicate was found

        print("no dupes")

        return arr

    else:

        return f"This is the duplicate {dup}, {arr}"



print(find_duplicate([1,-5,3,4,-10,100,250,-325,-5]))


print(find_duplicate([1,-5,3,4,-10,100,250,-325,100]))


print(find_duplicate([1,-5,3,4,-10,100,250,-325,-5,10]))

輸出

This is the duplicate -5, [-325, -10, -5, -5, 1, 3, 4, 100, 250]

This is the duplicate 100, [-325, -10, -5, 1, 3, 4, 100, 100, 250]

This is the duplicate -5, [-325, -10, -5, -5, 1, 3, 4, 10, 100, 250]


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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