python用选择法进行排序_Python排序算法之选择排序

一. 选择排序

有8个重量不一样的瓶子,需要你将这8个瓶子按照重量由小到大排序。

有一个天平可以用,天平每次只能比较2个瓶子的重量

步骤:

(1)先找出8个里面最轻的,你会如何做呢?最少要比较几次?为什么?

我们可以将1号瓶子和2号瓶子比较,找到较轻的那个,然后将这个较轻的瓶子再和3号瓶子比较,再找到较轻的那个,依次类推,比较7次,我们就可以找出最轻的瓶子了。

(2)再用这种方式将所有瓶子排序

这就是选择排序的运作方式。首先,找到最轻的容器放在第一个位置,接下来,再从剩下的容器中挑出最轻的,并放到第二个位置,重复这个动作直到所有的容器按照顺序放好。

请思考,找到最轻的瓶子(第一个位置的瓶子)需要7次排序,找到次轻的瓶子(第二个位置的瓶子)需要6次排序......请完善下面的表格。

现在有一组数据list=[54,226,93,17,77]

(1)请你写出每一趟排序后的结果。

第一趟:17,226,93,54,77

第二趟:17,54,93,226,77

第三趟:17,54,77,226,93

第四趟:17,54, 77, 93, 226

(2)思考这组数字一共进行了多少趟排序,每趟参与排序的是哪些数字?

一共进行了4趟排序

第一趟:参与排序的是list[0]-list[4]

第二趟:参与排序的是list[1]-list[4]

第三趟:参与排序的是list[2]-list[4]

第四趟:参与排序的是list[3]-list[4]

(3)请思考,如果是n个数字,需要多少趟,每趟需要多少次比较,每趟参与排序的是哪些数字?

n个数字,需要n-1趟,第一趟需要n-1次比较,参与排序的数字是list[0]-list[n-1],第二趟需要n-2次比较,参与排序的数字是list[1]-list[n-1],依次类推,因此需要for嵌套循环。

请用Python语言写出for嵌套循环

n = len(list)

for i in range(n-1):

for j in range(i, n)

(4) 选择排序的关键操作是比较和交换,请补充代码,写出完整的选择排序

def selectionSort(lst):

n = len(lst)

for i in range(n-1):

min_index = i

for j in range(i, n):

if lst[j] < lst[min_index]:

min_index = j

a = lst[i]

lst[i] = lst[min_index]

lst[min_index] = a

print(lst)

selectionSort([54, 226, 93, 17, 77])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值