python 排序演算法

來源:互聯網
上載者:User

標籤:logs   技術   bre   返回   code   交換   最大的   UI   blog   

一、冒泡排序

兩層for迴圈,內迴圈比較當前數與下一位的大小,如小,交換位置。

1 def bubble_sort(data):2     for i in range(len(data)-1):3         for j in range(len(data)- i -1):4             if data[j]<data[j + 1]:5                 data[j], data[j + 1] = data[j + 1], data[j]
View Code

二、插入排序

迴圈有序數列後的每一位元,如果大於有序數列的最後一位,則兩數交換位置,再與有序數列的最後第二位比較,以此類推。

1 def insect_sort(data):2     for i in range(1, len(data)):3         tmp = data[i]4         j = i - 15         while j<=0 and data[j] > tmp:6             data[j],data[j + 1] = data[j + 1],data[j]7             j -= 18         data[j + 1] = tmp
View Code

三、選擇排序

每次for迴圈都找出最小的數,作為該次迴圈的結果

1 def select_sort(data):2     for i in range(len(data)-1):3         min_num = i4         for j in range(i+1, len(data)):5             if data[j]<data[i]:6                 min_num = j7             data[i], data[min_num] = data[min_num], data[i]
View Code

四、快排

選第一個數,從左開始迴圈比較,如小於,停止迴圈,將小的數放至第一個數位置,從右開始迴圈,如大於,停止迴圈,將大的數放到上次迴圈空位上,如此迴圈直到left = right,返回mid,進行遞迴

 1 def quick_sort(data,left,right): 2     if left<right: 3         mid = partition(data,left,right): 4         quick_sort(data,left,mid-1) 5         quick_sort(data,mid+1,right) 6  7 def partition(data,left,right): 8     tmp = data[left] 9     while left < right:10         while left < right and data[right]>=tmp:11             right -= 112         data[left] = data[right]13         while left < right and data[left]<=tmp:14             left += 115         data[right] = data [left]16     data[left] = tmp17     return left
View Code

五、堆排序

先從最小的有子節點的父節點開始迴圈調整建堆,然後取數,將堆末與堆頂換位,再進行一次除開已換下位的堆頂的調整,如此迴圈。

 1 def sift(data,low,high): 2     i = low 3     j = 2*i + 1 4     tmp = data[i] 5     while j <= high:  # 只要沒到最後根最後 6         if j < high and data[j] < data[j + 1]:  # 是否有右孩子,且右孩子大於左孩子 7             j = j + 1  # j 成為最大孩子的下標 8         if tmp < data[j]:  # 最大的孩子是否大於父親 9             data[i] = data[j]  # 子孩子上位10             i = j  # 重新賦值下標11             j = 2*i + 112         else:  # 上述條件都不滿足,跳出迴圈13             break14     data[i] = tmp15 16 def heap_sort(data):17     n = len(data)18     for i in range(n // 2 -1 ,-1,-1):19         sift(data,i,n-1)20     for i in range(n-1,-1,-1):21         data[0],data[i] = data[i],data[0]22         sift(data,0,i-1)
View Code

 

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.