python 實現排序演算法

2022-07-15 04:03:11 字數 1110 閱讀 3900

用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 錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。穩定性 氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交...