用python實現插入排序
python實現插入排序definsertionsort(alist):
length =len(alist)
for i in range(1,length):
temnum =alist[i]
c=0for j in range(i,0,-1):
if temnum < alist[j-1]:
alist[j] = alist[j-1]
c += 1
else: #
當第一次發現前面的值比自己小時就該退出迴圈
if c ==0:
break
else
: alist[i - c] =temnum
break
else
:
'''當程式執行到當j=0之後,會跳出迴圈時,將之前的temnum賦值給第一位
此處只會在某個值和第一位進行比較的時候才會進入,將這個值付給第一位
'''alist[0]=temnum
print("
times
", i, ":"
, alist)
return
alist
if__name__ == "
__main__":
alist = [7,3,5,4,6,2]
print("
initlist:
",alist)
insertionsort(alist)
雖然插入排序是o(n^2)的排序方法,但當給出的值排序的正確率越多,排序的次數就越少,當列表以從小到大的順序給出的話,排序等於o(n)
結果:
initlist: [7, 3, 5, 4, 6, 2]times 1 : [3, 7, 5, 4, 6, 2]
times 2 : [3, 5, 7, 4, 6, 2]
times 3 : [3, 4, 5, 7, 6, 2]
times 4 : [3, 4, 5, 6, 7, 2]
times 5 : [2, 3, 4, 5, 6, 7]
排序演算法python實現
先列出一些演算法複雜度的識別符號號的意思,最常用的是o,表示演算法的上屆,如 2n2 o n2 而且有可能是漸進緊確的,意思是g n 乘上乙個常數係數是可以等於f n 的,就是所謂的a b。而o的區別就是非漸進緊確的,如2n o n2 o n2 確實可以作為2n的上屆,不過比較大,就是所謂的a其他符...
python排序演算法實現
coding utf 8 氣泡排序 氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比第二個大 公升序 就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步...
Python實現排序演算法
一.氣泡排序 該排序重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序 如從大到小 首字母從z到a 錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。穩定性 氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交...