python由大到小排序_Python选择从小到大的排序,python

选择排序原理:

假设原数组为 array=[2,6,7,5,8,4,9]

1.交换后

array=[2,6,7,5,8,4,9]

2.1交换后

array=[2,5,7,6,8,4,9]

2.2交换后

array=[2,4,7,6,8,5,9]

3.1交换后

array=[2,4,6,7,8,5,9]

3.2交换后

array=[2,4,5,7,8,6,9]

……

以此类推,可以看到,在第 i 次大循环后,可以确定从左往右第 i 个数的位置。

import numpy as np

def selection_sort(array):

L=len(array)

for i in range(0,L-1):

for j in range(i+1,L):

if array[j]

temp=array[i]

array[i]=array[j]

array[j]=temp

return array

array = np.random.randint(0, 11, 6)

print(array)

array_sort=selection_sort(array)

print(array_sort)

==============================================

选择排序和冒泡排序的排序方向刚好相反,前者从前往后,后者从后往前。选择排序的简单之处在于,不需要不停对相邻两个数进行比较后交换,只需要将当前比较列表中的数据和列表中第一个数进行比较,符合条件则拿到前面来,减少了内层比较、交换次数。

=============================================

选择排序和冒泡排序的第二个不同是,选择排序具有“不稳定性”,主要是对于重复元素的处理,可能会打乱重复元素的顺序

假设原数组为 array=[3(1),8,3(2),6,1,9],用(1)(2)代指两个重复的元素3

选择排序:

1.1交换后

array=[1,8,3(2),6,3(1),9]

2.1交换后

array=[1,3(2),8,6,3(1),9]

……

可以看到,在后面的排序中,“3(1)”始终会在“3(2)”的右边,这改变了原数组中的次序。

冒泡排序:

1.1交换后

array=[3(1),3(2),8,6,1,9]

1.2交换后

array=[3(1),3(2),6,8,1,9]

1.3交换后

array=[3(1),3(2),6,1,8,9]

2.1交换后

array=[3(1),3(2),1,6,8,9]

……

此后元素 “1”不断往前,可以看到 “3(1)”和 “3(2)”的左右顺序始终没有改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值