python实现冒泡、选择、交换、插入、快速排序

本文介绍了几种常见的排序算法,包括冒泡排序、选择排序、插入排序这三种效率较低的排序方法,以及快速排序、堆排序和归并排序这三种高效的排序算法。此外,还提及了希尔排序、计算排序等其他排序方式。代码示例展示了这些排序算法的Python实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

排序low B 三人组:冒泡、选择、插入
排序牛逼三人组: 快速排序、堆排序、归并排序
其他排序:希尔排序、计算排序、基础排序

1、冒泡排序

def pubble_sort(li):
	for i in range(len(li)-1):
		exchange=0                  #优化,如果已经排好序了,就终止
		for j in range(len(li)-1-i):
			if li[j]>li[j+1]:
				li[j],li[j+1]=li[j+1],li[j]
				exchange=1
		if exchange == 0:
			return li
	return li
	
li=[10,9,6,8,5,7]
print(pubble_sort(li))

2、选择法 从数据中选择最小的同第一个值交换,在从剩下的部分中选择最小的与第二个交换,这样往复下去

def select_sort(li):
	for i in range(len(li)-1):
		min_loc=i
		for j in range(i+1,len(li)):
			if li[j] < li[min_loc]:
				min_loc=j
		if min_loc != i:
			li[i],li[min_loc]=li[min_loc],li[i]
	return li

3、交换法 每次用当前的元素一一的同其后的元素,比较并交换

def swap_sort(li):
	for i in range(len(li)-1):
		for j in range(i+1,len(li)):
			if li[j] < li[i]:
				li[i],li[j]=li[j],li[i]
	return li

4、插入排序,在前面的数中寻找相应的位置插入,然后继续下一张 ,插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕

def insert_sort(li):
	for i in range(1,len(li)):
		tmp=li[i]
		j = i-1
		while j>=0 and tmp<li[j]:
			li[j+1]=li[j]
			j=j-1
		li[j+1]=tmp
	return li

li=[10,9,6,8,5,7]
print(insert_sort(li))

5、快速排序:
该方法的基本思想是:
#1.先从数列中取出一个数作为基准数。
#2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
#3.再对左右区间重复第二步,直到各区间只有一个数。

def partition(li,left,right):
	tmp=li[left]
	while left < right:
		while left<right and li[right]>=tmp:
			right=right-1
		li[left]=li[right]
		while left<right and li[left]<=tmp:
			left=left+1
		li[right]=li[left]
	li[left]=tmp
	return left

def quick_sort(li,left,right):
	if left<right:
		mid=partition(li,left,right)
		quick_sort(li,left,mid-1)
		quick_sort(li,mid+1,right)

li=[10,3,5,1,8,6]
quick_sort(li,0,len(li)-1)
print(li)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

javascript_good

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值