python演算法之排序演算法

來源:互聯網
上載者:User

標籤:sel   i+1   冒泡排序   5.4   insert   插入排序   and   while   gpo   

冒泡排序
 1 def bubble_sort(li): 2     ‘‘‘本演算法複雜度為O(n**2)‘‘‘ 3     for i in range(len(li)-1):# 列表長度為n,需要n-1趟 4         ‘‘‘ 5         i的取值個數為n-1 6         i=0時,j的取值個數為n-1 7         i=1時,j的取值個數為n-1-1 8         i=2時,j的取值個數為n-1-1-1 9         故對於i,j的取值個數為n-1-10         ‘‘‘11         for j in range(len(li)-1-i):12             # 若後面的數小於前面數,則兩數前後交換13             if li[j] > li[j+1]:14                 li[j],li[j+1] = li[j+1],li[j]15 li = [random.randint(0,10000) for i in range(10000)]16 print(li)17 bubble_sort(li)18 print(li)
選擇排序
# 選擇排序# 一趟排序記錄最小的數,放到第一個位置# 再一趟排序記錄記錄無序區最小的數,放到第二個位置# ......# 演算法關鍵的:有序區和無序區,無序去最小數的位置# 本演算法複雜度為O(n**2)def select_sort(li):    for i in range(len(li)-1):        # 需要排n-1趟        tmp = i # tmp用來記錄無序區最小的數的索引        for j in range(i+1,len(li)):            ‘‘‘            j的範圍即無序區範圍            i=0時,j的範圍是1到最後            i=1時,j的範圍是2到最後            ......            ‘‘‘            if li[j]<li[tmp]:                tmp=j        li[i],li[tmp] = li[tmp],li[i]# li = [23,35,3,23,23,2,1,4,34,23,4,3,23,5,23,2,34,23,23,2,34,2,4534,6,7,4,6,8,3,42]# li = [random.randint(0,10000) for i in range(1000)]# print(len(li),li)# select_sort(li) # 用時0.053# print(li)# li = [random.randint(0,10000) for i in range(10000)]# print(len(li),li)# select_sort(li) # 用時6.057# print(li)

 插入排序

 本演算法時間複雜度也是O(n**2)

 1 def insert_sort(li): 2     for i in range(1,len(li)): 3         tmp = li[i] 4         j = i-1# j指手裡的牌的下標 5         while j>=0 and li[j] > tmp: 6             li[j+1] = li[j] 7             j -= 1 8         li[j+1] = tmp 9 # li = [3,2,5,6,4,3,6,7,5,7,6,45,7,8,8,34]10 # print(insert_sort(li))11 li = [random.randint(0,10000) for i in range(1000)]12 print(li)13 insert_sort(li)# 0.04914 print(li)#15 16 li = [random.randint(0,10000) for i in range(10000)]17 print(li)18 insert_sort(li)# 5.4619 print(li)#

 

python演算法之排序演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.