python褰掑苟鎺掑簭绠楁硶鎬庝箞瀹炵幇
褰掑苟鎺掑簭鏄竴绉嶅垎娌荤畻娉曪紝瀹冨皢涓€涓ぇ鐨勯棶棰樺垎瑙d负澶氫釜灏忛棶棰橈紝鐒跺悗灏嗗皬闂鐨勮В鍚堝苟璧锋潵寰楀埌鏈€缁堢殑瑙c€?/p>
褰掑苟鎺掑簭鐨勫疄鐜版楠ゅ涓嬶細
- 灏嗗緟鎺掑簭鐨勫垪琛ㄩ€掑綊鍦板垎鎴愪袱涓瓙鍒楄〃锛岀洿鍒版瘡涓瓙鍒楄〃鍙湁涓€涓厓绱犱负姝€?/li>
- 瀵规瘡涓瓙鍒楄〃杩涜褰掑苟鎺掑簭锛屽嵆涓嶆柇鍦板皢涓や釜宸叉帓搴忕殑瀛愬垪琛ㄥ悎骞舵垚涓€涓湁搴忕殑瀛愬垪琛ㄣ€?/li>
- 灏嗕袱涓湁搴忕殑瀛愬垪琛ㄥ悎骞舵垚涓€涓湁搴忕殑鍒楄〃銆?/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]
相关问答