python如何實現排序算法解析-創新互聯

這篇文章將為大家詳細講解有關python如何實現排序算法解析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創新互聯主要為客戶提供服務項目涵蓋了網頁視覺設計、VI標志設計、成都全網營銷、網站程序開發、HTML5響應式網站建設、移動網站建設、微商城、網站托管及網站建設維護、WEB系統開發、域名注冊、國內外服務器租用、視頻、平面設計、SEO優化排名。設計、前端、后端三個建站步驟的完善服務體系。一人跟蹤測試的建站服務標準。已經為戶外休閑椅行業客戶提供了網站開發服務。

具體內容如下

一、冒泡排序

def bububle_sort(alist):
 """冒泡排序(穩定|n^2m)"""
 n = len(alist)
 for j in range(n-1):
  count = 0
  for i in range(0,n-1-j):
   if alist[i]>alist[i+1]:
    count +=1
    alist[i], alist[i+1] = alist[i+1], alist[i]
  if count==0:
   return

二、選擇排序

def select_sort(alist):
  """選擇排序(不穩定|n^2)"""
  n = len(alist)
  for j in range(n-1):
    min_index = j
    for i in range(j+1,n):
      if alist[min_index] > alist[i]:
        min_index = i
    alist[j], alist[min_index] = alist[min_index], alist[j]

三、插入排序

def insert_sort(alist):
  """插入排序(穩定|n^2)"""
  n = len(alist)
  for j in range(1,n):
    i = j
    while i>0:
      if alist[i] < alist[i-1]:
        alist[i], alist[i-1] = alist[i-1], alist[i]
        i -= 1
      else:
        break

四、希爾排序

def shell_sort(alist):
  """希爾排序(不穩定|n^2)"""
  n = len(alist)
  gap = n//2

  while gap>=1:
    for j in range(gap,n):
      i=j
      while i>0:
        if alist[i]<alist[i-gap]:
          alist[i], alist[i-gap] = alist[i-gap], alist[i]
          i -= gap
        else:
          break
    gap //=2

五、快速排序

def quick_sort(alist, first, last):
  """快速排序(不穩定|n^2)"""
  if first >= last:
    return
  mid_value = alist[first]
  low = first
  high = last
  while low < high:
    #high左移
    while low <high and alist[high] >= mid_value:
      high -= 1
    alist[low] = alist[high]
    #low右移
    while low < high and alist[low] < mid_value:
      low += 1
    alist[high] =alist[low] 
  #從循環退出時,low=high
  alist[low] = mid_value

  #對low左邊的列表執行快速排序
  quick_sort(alist, first, low-1)
  #對low右邊的列表執行快速排序
  quick_sort(alist, low+1, last)

六、歸并排序

def merge_sort(alist):
  """歸并排序(穩定|nlgn)"""
  n = len(alist)
  if n <= 1:
    return alist
  mid = n//2

  #left 采用歸并排序后形成新的有序列表
  left_li = merge_sort(alist[:mid])
  #right 采用歸并排序后形成新的有序列表
  right_li = merge_sort(alist[mid:])

  #merge(left, right) 將兩個有序的子序列合并為一個新的整體
  left_pointer, right_pointer = 0, 0
  result = []

  while left_pointer < len(left_li) and right_pointer<len(right_li):
    if left_li[left_pointer] < right_li[right_pointer]:
      result.append(left_li[left_pointer])
      left_pointer += 1
    else:
      result.append(right_li[right_pointer])
      right_pointer += 1

  result += left_li[left_pointer:]
  result += right_li[right_pointer:]
  return result

python如何實現排序算法解析

關于“python如何實現排序算法解析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

本文標題:python如何實現排序算法解析-創新互聯
標題鏈接:http://m.kartarina.com/article18/egsgp.html

成都網站建設公司_創新互聯,為您提供外貿網站建設、App開發Google網站策劃、網站導航、手機網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都app開發公司
主站蜘蛛池模板: 亚洲一本大道无码av天堂| 亚洲成a人无码亚洲成www牛牛| 人妻丝袜无码专区视频网站| 亚洲精品自偷自拍无码| 精品无码人妻一区二区三区不卡 | 亚洲中文字幕不卡无码| 熟妇无码乱子成人精品| 四虎成人精品国产永久免费无码| 亚洲av无码一区二区乱子伦as | 久久久久亚洲av无码专区喷水| 人妻无码久久精品人妻| 久久久久无码国产精品一区| 无码毛片一区二区三区视频免费播放| 日韩乱码人妻无码系列中文字幕| 精品人妻中文无码AV在线| 无码AV波多野结衣久久| 国产无遮挡无码视频免费软件| 18禁无遮挡无码网站免费| 日韩精品无码AV成人观看| 少妇无码太爽了在线播放| 精品人妻中文无码AV在线| 亚洲精品天堂无码中文字幕| 玖玖资源站无码专区| 国产V亚洲V天堂A无码| 国产精品无码午夜福利| 国产成人无码精品一区在线观看| 无码无需播放器在线观看| 亚洲综合久久精品无码色欲| 亚洲av专区无码观看精品天堂| 亚洲AV永久无码精品水牛影视 | 久久久久亚洲AV片无码| 国产在线观看无码免费视频| 亚洲午夜AV无码专区在线播放| 成人无码区免费视频观看| 精品少妇人妻AV无码专区不卡| 一本天堂ⅴ无码亚洲道久久 | 亚洲av永久无码精品秋霞电影影院| 亚洲男人第一无码aⅴ网站| H无码精品3D动漫在线观看| 亚洲中文字幕无码久久综合网| 国产精品亚洲а∨无码播放|