python排序

1.**选择排序(Selection sort)**是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

#选择
ls = [10, 12, 1, -20, 30, -100, 0, 8, 9]
def select_sort(ls):
	for i in range(len(ls)):
		min = i
		for j in range(i, len(ls)):
			if ls[min] > ls[j]:
				min = j
		if min != i:
			ls[i], ls[min] = ls[min], ls[i] #交换二个数的值,不需要定义太多变量
select_sort(ls)
print(ls)

E:\编程文件\python\字符串\venv\Scripts\python.exe E:/编程文件/python/字符串/venv/项目1.py
[-100, -20, 0, 1, 8, 9, 10, 12, 30]

2.**冒泡排序(Bubble Sort)**它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
原理:
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

#冒泡
ls = [10, 12, 1, -20, 30, -100, 0, 8, 9]
def bubble_sort(ls):
	for i in range(len(ls)):
		for j in range(len(ls) - 1 - i):
			if ls[j] > ls[j+1]:
				ls[j], ls[j+1] = ls[j+1], ls[j]
bubble_sort(ls)

E:\编程文件\python\字符串\venv\Scripts\python.exe E:/编程文件/python/字符串/venv/项目1.py
[-100, -20, 0, 1, 8, 9, 10, 12, 30]

3.插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 [1] 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动

#插入
def insert_sort(ls):

	for i in range(1, len(ls)):
		for j in range(i, 0, -1):
			if ls[j] < ls[j - 1]:
				ls[j], ls[j-1] = ls[j-1], ls[j]
insert_sort(ls)


E:\编程文件\python\字符串\venv\Scripts\python.exe E:/编程文件/python/字符串/venv/项目1.py
[-100, -20, 0, 1, 8, 9, 10, 12, 30]
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小时候不乖的

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

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

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

打赏作者

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

抵扣说明:

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

余额充值