扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

python褰掑苟鎺掑簭绠楁硶鎬庝箞瀹炵幇

扬州沐宇科技
2023-11-23 14:33:46
python

褰掑苟鎺掑簭鏄竴绉嶅垎娌荤畻娉曪紝瀹冨皢涓€涓ぇ鐨勯棶棰樺垎瑙d负澶氫釜灏忛棶棰橈紝鐒跺悗灏嗗皬闂鐨勮В鍚堝苟璧锋潵寰楀埌鏈€缁堢殑瑙c€?/p>

褰掑苟鎺掑簭鐨勫疄鐜版楠ゅ涓嬶細

  1. 灏嗗緟鎺掑簭鐨勫垪琛ㄩ€掑綊鍦板垎鎴愪袱涓瓙鍒楄〃锛岀洿鍒版瘡涓瓙鍒楄〃鍙湁涓€涓厓绱犱负姝€?/li>
  2. 瀵规瘡涓瓙鍒楄〃杩涜褰掑苟鎺掑簭锛屽嵆涓嶆柇鍦板皢涓や釜宸叉帓搴忕殑瀛愬垪琛ㄥ悎骞舵垚涓€涓湁搴忕殑瀛愬垪琛ㄣ€?/li>
  3. 灏嗕袱涓湁搴忕殑瀛愬垪琛ㄥ悎骞舵垚涓€涓湁搴忕殑鍒楄〃銆?/li>

涓嬮潰鏄竴涓熀浜庨€掑綊鐨勫綊骞舵帓搴忕畻娉曠殑绀轰緥浠g爜锛?/p>

def merge_sort(arr):
    if len(arr) <= 1:
        return arr
    
    # 灏嗗垪琛ㄥ垎鎴愪袱涓瓙鍒楄〃
    mid = len(arr) // 2
    left = arr[:mid]
    right = arr[mid:]
    
    # 閫掑綊鍦板瀛愬垪琛ㄨ繘琛屽綊骞舵帓搴?/span>
    left = merge_sort(left)
    right = merge_sort(right)
    
    # 鍚堝苟涓や釜鏈夊簭鐨勫瓙鍒楄〃
    return merge(left, right)

def merge(left, right):
    merged = []
    i = j = 0
    
    # 浠庝袱涓瓙鍒楄〃涓寜椤哄簭閫夊彇杈冨皬鐨勫厓绱犳斁鍏?merged 鍒楄〃涓?/span>
    while i < len(left) and j < len(right):
        if left[i] < right[j]:
            merged.append(left[i])
            i += 1
        else:
            merged.append(right[j])
            j += 1
    
    # 灏嗗墿浣欑殑鍏冪礌鏀惧叆 merged 鍒楄〃涓?/span>
    merged += left[i:]
    merged += right[j:]
    
    return merged

浣跨敤杩欎釜绠楁硶鏉ユ帓搴忎竴涓垪琛ㄧ殑绀轰緥浠g爜濡備笅锛?/p>

arr = [54, 26, 93, 17, 77, 31, 44, 55, 20]
sorted_arr = merge_sort(arr)
print(sorted_arr)

杈撳嚭缁撴灉涓猴細[17, 20, 26, 31, 44, 54, 55, 77, 93]

扫码添加客服微信