我已經嘗試在Python編碼插入排序算法 -製作「插入排序」算法更高效 - 的Python 3.5.2
def insertion(list):
checked = 2
while (checked <= len(list)):
for i in range(checked-1):
if list[checked-1] < list[i]:
list.insert(i, list[checked-1])
del list[checked]
checked+=1
return list
我測量它採取執行1000項排序的時間 - 106.08099999999997第二
1000分之我發現這是相當緩慢的,因爲 -
def bubbleSort(alist,n):
for j in range(1,n):
nextnum = alist[j]
i = j - 1
while i>=0 and alist[i]>nextnum:
alist[i + 1] = alist[i]
i = i - 1
alist[i + 1] = nextnum
僅僅用了 - 83.71800000000007千分之一一秒
有沒有什麼辦法可以讓我的代碼更有效率/我會不得不使用不同的代碼?如果是這樣,哪種插入排序實現在python中最快?我知道插入排序通常不是最好的算法。這只是爲了我的學校工作,以便我能更好地理解我們學習的算法。
1.您是如何「測量」的?你用'timeit'完成了嗎? 2.如果你想要一個高效的排序算法,不要使用O(n^2)算法:使用合併或快速排序。如果你知道數字的範圍,你可以用基數或桶排序來實現線性時間 – alfasin
我剛用過time.clock()。它可能不準確,但它只是爲了證明它比其他代碼慢。再次,正如我在底部所述,這僅僅是爲了學校工作。我並不是在尋找最高效的算法,但感謝您的建議。 –