這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何在python中實現(xiàn)歸并排序,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)專注于渦陽企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站定制開發(fā)。渦陽網(wǎng)站建設(shè)公司,為渦陽等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站建設(shè),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
Python主要應(yīng)用于:1、Web開發(fā);2、數(shù)據(jù)科學(xué)研究;3、網(wǎng)絡(luò)爬蟲;4、嵌入式應(yīng)用開發(fā);5、游戲開發(fā);6、桌面應(yīng)用開發(fā)。
1、原理分析
(1)把一個序列從中間位置分成兩個序列;
(2)把這兩個子序列按第一步繼續(xù)分成兩部分;
(3)直到所有子序列的長度都是1,也就是說,不能再有二分截止。此時再兩兩合并成一個有序的序列。
2、實例
def merge(arr, low, mid, high): # low 和 high 為整個數(shù)組的第一個和最后一個位置索引,mid 為中間位置索引 # i 和 j 為指針,最初位置分別為兩個有序序列的起始位置 # ltmp 用來存放合并后的序列 i = low j = mid+1 ltmp = [] while i <= mid and j <= high: # 只要左右兩邊都有數(shù) if arr[i] < arr[j]: # 當(dāng)左邊的數(shù)小于右邊的數(shù) ltmp.append(arr[i]) # 將左邊的數(shù)存入 ltmp i += 1 # 左邊的指針往右移一位 else: # 當(dāng)右邊的數(shù)小于左邊的數(shù) ltmp.append(arr[j]) # 將右邊的數(shù)存入 ltmp j += 1 # 右邊的指針往右移一位 # 上面的 while 語句執(zhí)行完后,左邊或者右邊沒有數(shù)了 while i <= mid: # 當(dāng)左邊還有數(shù)的時候 ltmp.append(arr[i]) # 將左邊剩下的數(shù)全部存入 ltmp i += 1 while j <= high: # 當(dāng)右邊還有數(shù)的時候 ltmp.append(arr[j]) # 將右邊剩下的數(shù)全部存入 ltmp j += 1 arr[low:high+1] = ltmp # 將排序后的數(shù)組寫回原數(shù)組 def merge_sort(arr, low, high): # low 和 high 為整個數(shù)組的第一個和最后一個位置索引 if low < high: # 至少有兩個元素 mid = (low + high) // 2 merge_sort(arr, low, mid) # 把左邊遞歸分解 merge_sort(arr, mid+1, high) # 把右邊遞歸分解 merge(arr, low, mid, high) # 做歸并
上述就是小編為大家分享的如何在python中實現(xiàn)歸并排序了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。