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

冒泡排序

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

堆排序

  • 时间复杂度: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值