我已經創建了兩個函數,它們將整數從最低值到最高值再從低到低排序。這種排序是否存在?無論如何,我有以下兩個我創建的產生相同輸出的排序函數。我想知道哪個是最有效的兩個?我可以對此做出任何改進嗎?兩種排序功能之間的效率
sortMiddleMax1
- 創建一個新的反向由2
sortMiddleMax2
- 排序的排序原始
- 開始的列表從索引1至列表步驟的長度列表就地
- 開始從最後一個索引爲0的步驟由2
我試圖使所述第二比第一更有效。我沒有在內存中創建一個新列表,而是追加到最後,而不是將整個列表推向正確的位置。我在這個假設中糾正了嗎?
功能
def sortMiddleMax1(aList=None, verbose=False):
if aList == None or len(aList) < 2:
return aList
else:
sList = sorted(x, key=None, reverse=True)
if verbose: print sList
index = 1
while index < len(sList):
tmp = sList[index]
del sList[index]
sList.insert(0, tmp)
index+=2
if verbose: print sList
return sList
def sortMiddleMax2(aList=None, verbose=False):
if aList == None or len(aList) < 2:
return aList
else:
aList.sort()
if verbose: print aList
index = len(aList)-1
while index > 0:
tmp = aList[index]
del aList[index]
aList.append(tmp)
index-=2
if verbose: print aList
return aList
主要
x = [1,4,6,8,3,5,7,1,5,8,3,9,2,8]
print '############# sortMiddleMax1 #############'
x1 = sortMiddleMax1(x, True)
print '############# sortMiddleMax2 #############'
x2 = sortMiddleMax2(x, True)
輸出
############# sortMiddleMax1 #############
[9, 8, 8, 8, 7, 6, 5, 5, 4, 3, 3, 2, 1, 1]
[8, 9, 8, 8, 7, 6, 5, 5, 4, 3, 3, 2, 1, 1]
[8, 8, 9, 8, 7, 6, 5, 5, 4, 3, 3, 2, 1, 1]
[6, 8, 8, 9, 8, 7, 5, 5, 4, 3, 3, 2, 1, 1]
[5, 6, 8, 8, 9, 8, 7, 5, 4, 3, 3, 2, 1, 1]
[3, 5, 6, 8, 8, 9, 8, 7, 5, 4, 3, 2, 1, 1]
[2, 3, 5, 6, 8, 8, 9, 8, 7, 5, 4, 3, 1, 1]
[1, 2, 3, 5, 6, 8, 8, 9, 8, 7, 5, 4, 3, 1]
############# sortMiddleMax2 #############
[1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 8, 9]
[1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 8, 9]
[1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 8]
[1, 1, 2, 3, 3, 4, 5, 5, 6, 8, 8, 9, 8, 7]
[1, 1, 2, 3, 3, 4, 5, 6, 8, 8, 9, 8, 7, 5]
[1, 1, 2, 3, 3, 5, 6, 8, 8, 9, 8, 7, 5, 4]
[1, 1, 2, 3, 5, 6, 8, 8, 9, 8, 7, 5, 4, 3]
[1, 2, 3, 5, 6, 8, 8, 9, 8, 7, 5, 4, 3, 1]
您是否嘗試對他們每個人進行計時以查看哪個是最快的? – 2013-02-28 02:33:20
我不確定您的定義是否定義良好。'[1,2,3,4,5,10,9,8,7,6]'會是一個有效的結果嗎?它上升,然後下降!如果無效,則需要準確指定輸出的前半部分和後半部分是如何相關的。 – Blckknght 2013-02-28 02:36:45
@大衛我沒有計時。我不是在尋找速度,而是尋找內存佔用。 – 2013-02-28 02:52:22