#本程式用於對乙個陣列進行合併(merge)排序,這個陣列滿足:
1,可以從中間分成兩半部分;
2,兩部分各自本來就是有序的。
本程式是歸併排序演算法的一部分。效果是實現了從小到大排列。本程式時間複雜度o(n),n為待排序陣列長度
#本程式用於對乙個陣列進行合併(merge)排序,這個陣列滿足:1,可以從中間分成兩半部分;2,兩部分各自本來就是有序的。本程式是歸併排序演算法的一部分。效果是實現了從小到大排列。本程式時間複雜度o(n),n為待排序陣列長度
def mergesort(a=):#定義乙個輸入變數為陣列的python函式
mid = int((len(a)-1)/2)#定位中間點
temp = [0 for x in range(0,len(a))]#開闢乙個等長的空的臨時陣列,用於臨時存放比較結果
k=0i = 0 #先定位好左半部分開始指標
j = mid+1#再定位好右半部分開始指標
while k < len(a):
if i <=mid and j <= len(a)-1:#當左半部分沒有迴圈結束且右半部分也沒有迴圈結束時
#print("i=",i,"j=",j,"k=",k)#多處print注釋是因為一開始寫錯了,除錯了很久orz
if a[i]",i)
else:#如果左半部分指標指向的數大於等於右半部分指標指向的數,
temp[k]=a[j]#則臨時陣列先放右半部分的數
#print("temp[k]=",temp[k])
j += 1#右半部分指標右移一位,繼續跟左半部分比較
#print("j->",j)
elif i>mid:#當左半部分先迴圈結束時
temp[k]=a[j]#剩下的右半部分直接放到臨時陣列
#print("temp[k]=",temp[k])
j += 1#右半部分指標繼續右移
#print("j->",j)
else:#當右半部分先迴圈結束時
temp[k]=a[i]#剩下的左半部分直接放到臨時陣列
#print("temp[k]=",temp[k])
i+= 1#左半部分指標繼續右移
#print("i->",i)
k += 1#完成一輪比較,臨時陣列指標右移一位
#print("k->",k)
m=0while ma[m]=temp[m]
m += 1
array =[1,4,6,2,3,8]
mergesort(array)#呼叫函式
print(array)
第九章 關公的臉譜
1.紅臉關公的由來 關公的臉譜 石可破也,而不可奪堅 丹可磨也,而不可奪赤。堅與赤,性之有也。性也者,所受於天也,非擇取而為之也。豪士之自好者,其不可漫以汙也,亦猶此也。呂氏春秋 話說曹操煮酒論英雄之時,忽然驚雷暴雨,關羽 張飛惦記著劉備,急忙送傘過來。曹操看到關羽,眼前頓時一亮,笑著對劉備說 我剛...
第九章 類的重用
一 什麼是繼承?1 繼承是類與類間的關係。2 是一種什麼 是 什麼的關係。3 繼承功能就是用來解決 重用的問題。1 繼承 是一種建立新類的方式,python中,1 新建的類可以繼承乙個或多個父類。2 父類可以成為基類或超類。3 所新建的類稱為子類或派生類。2 類繼承的數量 python中類的繼承分為...
第九章 做決定的時刻
2.影響自我完整性的決定 3.重大決定 三種型別的要求 1 無關緊要的要求 2 牽扯到重要的問題,中度 3 重要的決定,一旦讓步,就是傷害。請注意 雖然是無關緊要的決定,但是不要有自動的行為模式。而是應該審視對方的要求,尤其是呈現方式,放在大環境下進行分析。批判性地思考問題所在 1 我們之間固定的相...