一份Python排序算法,包揽所有关于排序的案例!

|

冒泡排序(私信小编007自动获取Python学习资料)

  • 时间复杂度:O(n²)
  • 空间复杂度:O(1)
  • 健壮性:健壮
  • 难易程度:简单
在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,784758214
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容

def bubbleSort(li):
 for i in range(len(li) - 1):
 for j in range(len(li) - i - 1):
 if li[j] > li[j + 1]:
 li[j], li[j + 1] = li[j + 1], li[j]
li = [345, 456, 68.435, 1, 6, 4, 568, ]
bubbleSort(li)
print(li)

选择排序

  • 时间复杂度:O(n²)
  • 空间复杂度:O(1)
  • 健壮性:健壮
  • 难易程度:简单
def selectSort(li):
 for i in range(len(li) - 1):
 min = I # 选择一个小的来比较
 for j in range(i + 1, len(li)):
 if li[min] > li[j]:
 li[min], li[j] = li[j], li[min]
li = [345, 456, 68.435, 1, 6, 4, 568, ]
selectSort(li)
print(li)

插入排序

  • 时间复杂度:O(n²)
  • 空间复杂度:O(1)
  • 健壮性:健壮
  • 难易程度:较复杂
def insertSort(li):
 for i in range(len(li) - 1):
 temp = li[i]
 j = i - 1
 while j >= 0 and li[j] > temp:
 li[j + 1] = li[j]
 j = j - 1
 li[j + 1] = temp
li = [345, 456, 68.435, 1, 6, 4, 568, ]
insertSort(li)
print(li)

快速排序

  • 时间复杂度:O(nlogn)
  • 空间复杂度:O(nlogn)
  • 健壮性:不稳定
  • 难易程度:复杂
def partition(li, left, right):
 temp = li[left]
 while left < right:
 while li[right] > temp:
 right -= 1
 li[left] = li[right]
 while li[left] < temp:
 left += 1
 li[right] = li[left]
 li[left] = temp
 return left
def quickSort(li, left, right):
 if left < right:
 mid = partition(li, left, right)
 quickSort(li, left, mid - 1)
 quickSort(li, mid + 1, right)
li = [345, 456, 68.435, 1, 6, 4, 568, ]
partition(li, 0, (len(li) - 1))
quickSort(li, 0, (len(li) - 1))
print(li)

如果你依然在编程的世界里迷茫,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的。从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!每天分享一些学习的方法和需要注意的小细节,技术经验分享!点击加入我们的 python学习者聚集地

堆排序

  • 时间复杂度:O(nlog₂n)
  • 空间复杂度:O(1)
  • 健壮性:不稳定
  • 难易程度: 困难
def heap_sort(array):
 def heap_adjust(parent):
 child = 2 * parent + 1 # left child
 while child < len(heap):
 if child + 1 < len(heap):
 if heap[child + 1] > heap[child]:
 child += 1 # right child
 if heap[parent] >= heap[child]:
 break
 heap[parent], heap[child] = 
 heap[child], heap[parent]
 parent, child = child, 2 * child + 1
 heap, array = array.copy(), []
 for i in range(len(heap) // 2, -1, -1):
 heap_adjust(i)
 while len(heap) != 0:
 heap[0], heap[-1] = heap[-1], heap[0]
 array.insert(0, heap.pop())
 heap_adjust(0)
 return array

你可能感兴趣的:(一份Python排序算法,包揽所有关于排序的案例!)