python实现 排序算法

本文介绍了Python中常见的排序算法,包括冒泡排序、选择排序、插入排序等O(n^2)复杂度的排序,以及快速排序、归并排序、堆排序等O(nlogn)复杂度的排序。此外,还探讨了计算排序如计数排序和桶排序,讨论了它们的时间复杂度和适用场景。
摘要由CSDN通过智能技术生成

各种排序算法

在这里插入图片描述

O(n2)

——————————————————————————————

冒泡排序,稳定排序

每一轮都要遍历所有元素,总共遍历(元素数量 - 1)轮

# 冒泡排序,最大的冒泡上去,最后元素最大

def bubble_sort1(array = []):
	for i in range(len(array) - 1):
		for j in range(len(array) - i - 1):
			if array[j] > array[j + 1]:
				temp = array[j]
				array[j] = array[j + 1]
				array[j + 1] = temp

# 冒泡优化,设置标志位
def bubble_sort2(array = []):
	for i in range(len(array) - 1):
		# 有序标记,每一轮初始值是True
		is_sorted = True
		for j in range(len(array) - i - 1):
			if array[j] > array[j + 1]:
				temp = array[j]
				array[j] = array[j + 1]
				array[j + 1] = temp
				# 有元素交换,所以是有序的,标记变为False
				is_sorted = False
	  # 如果发现标志位没有变为False,意思是没有交换,已经有序,则直接退出
		if is_sorted:
			break

# 优化3,在每一轮排序后,记录下最后一次元素交换的位置,则该位置即为无序数列的边界,再往后就是有序曲了
def bubble_sort3(array = []):
	# 记录最后一次交换的位置
	last_exchange_index = 0
	# 无序数列的边界,每次比较只需比到这里
	sort_border = len(array) - 1
	for i in range(len(array) - 1):
		# 有序标记,每一轮的初始是True
		is_sorted = True
		for j in range(sort_border):
			if array[j] > array[j + 1]:
				temp = array[j]
				array[j] = array[j + 1]
				array[j + 1] = temp
				# 已经交换,所以变为False
				is_sorted = False
				# 把无序数列的边界值更新为最后一次交换元素的位置
				last_exchange_index = j
		sort_border = last_exchange_index
		if is_sorted:
			break

my_array = list([3,5,7,2,3,44,5,0])
bubble_sort1(my_array)
print(my_array) #[0, 2, 3, 3, 5, 5, 7, 44]

选择排序


# 选择排序
# 找最小的小标,然后交换,最后循环(数组长度 -1 )


def selectionSort(array = []):
	for i in range(len(array) - 1):
		# 记录最小数的索引
		minIndex = i
		for j in range(i + 1, len(array)):
			if array[j] < array[minIndex]:
				minIndex = j
		# i 不是最小数字时,将i和最小数进行交换
		if i != minIndex
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值