python排序

选择排序:

假设一个列表:
arr = [8,3,2,6,1,4,9,7]
我们需要对该列表使用选择排序来排序。
原理:
8 3 2 6 1 4 9 7
0 1 2 3 4 5 6 7 (下标)
首先从下标为0的元素开始与后面的元素比较,若i个元素的值大于第i+1个元素的值,那么则交换位置。
所以第一次交换后的列表应为:
3 8 2 6 1 4 9 7
那么此时3对应的下标为0,所以3继续与后面的元素进行比较。直到下标为0的元素的值小于所有元素后,则从下标为1的元素开始比较。
下面是比较的全过程:
I :1- [3 8 2 6 1 4 9 7]
::2- [2 8 3 6 1 4 9 7]
::3- [1 8 3 6 2 4 9 7]

II :1- [1 3 8 6 2 4 9 7]
::2- [1 2 8 6 3 4 9 7]

III :1- [1 2 6 8 3 4 9 7]
:: 2- [1 2 3 8 6 4 9 7]

IV :1- [1 2 3 6 8 4 9 7]
:: 2- [1 2 3 4 8 6 9 7]

V : 1- [1 2 3 4 6 8 9 7]
:: 2- [1 2 3 4 6 7 9 8]

VI :1- [1 2 3 4 6 7 8 9]

下面是实现的代码:

arr = [8,3,2,6,1,4,9,7]
for i in range(0,len(arr)): #利用i去遍历列表(从0开始)
	for j in range(i+1,len(arr)): #利用j去遍历列表(从i+1开始)
		if arr[i] >= arr[j]:  #交换的条件
			arr[i],arr[j] = arr[j],arr[i] #异或交换(python独有)
print(arr)

PS C:\Users\ASUS> & C:/Users/ASUS/AppData/Local/Programs/Python/Python39/python.exe d:/Dsektop/py/suibian.py
[1, 2, 3, 4, 6, 7, 8, 9] ——(结果)
PS C:\Users\ASUS>

冒泡排序:

同样的一个列表:
arr = [8,3,2,6,1,4,9,7]
首先从下标0开始记为j那么下标1则为j+1 ,若j对应的值大于j+1的值那么则交换位置。
例:
在这里插入图片描述
直到找到该列表中的最大值,才开始新一轮的比较。
如下:
在这里插入图片描述
3>2 交换位置(下标+1),3<4不变(下标+1),4<6不变(下标+1),6<7不变(下标+1),7>1交换位置(下标+1)
在这里插入图片描述
7<8不变,又开始新的一轮比较,直到将1移到最前面结束。
代码:

arr = [8,3,2,6,1,4,9,7]
for i in range(0,len(arr)-1):
	for j in range(0,len(arr)-1-i):
		if arr[j] >= arr[j+1]:
			arr[j],arr[j+1] = arr[j+1],arr[j]
print(arr)

结果:
在这里插入图片描述
以上就是两种基础排序的原理与实现,若有问题还请大家指出。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值