国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實現排序算法解析

2020-02-15 22:55:10
字體:
來源:轉載
供稿:網友

本文實例為大家分享了python實現排序算法的具體代碼,供大家參考,具體內容如下

一、冒泡排序

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灌阳县| 富川| 绩溪县| 彩票| 尼木县| 磐石市| 堆龙德庆县| 汶川县| 定陶县| 湟源县| 德清县| 饶河县| 通城县| 清镇市| 太康县| 漯河市| 社会| 长宁县| 高青县| 鄂伦春自治旗| 广饶县| 米脂县| 会昌县| 湾仔区| 腾冲县| 华亭县| 射阳县| 诸城市| 柘荣县| 慈利县| 芦山县| 新干县| 库伦旗| 满城县| 聂拉木县| 长沙县| 扎兰屯市| 宣化县| 筠连县| 四平市| 镶黄旗|