2021-06-24选择排序

选择排序

选择排序和冒泡排序的共同点,都是要进行多轮遍历
因为n个位置一共可以放置n个数据,所以当确定n-1个位置时,n个数字都确定了位置。所以轮数的范围都是n-1.
两者的区别就是每次遍历时,遍历的范围不同
冒泡排序每次输出一个最大或者最小值,对比时都会对比i和i+1位置。所以只用到n-1位置就能获取最后一个位置数据。而且又跟轮数有关。所以最后n-1-j。
选择排序,每次放一个数据到前面,所以每次开始位置和轮数有关。最开始对比的数据就是1位置的。所以范围是1+j~n

#coding:utf-8
def select_sort(alist):

    n=len(alist)
    for j in range(n-1):#0~n-2
        #当范围到n-2位置时,对比已经完成.n个位置确定了n-1个数的位置,最后一个位置也确定。因为区间都是左闭右开,所以n-1能只能取到n-2位置的数据
        min_index = j
        # 最小值下标,跟轮数有关系
        for i in range(1+j,n):
            #从1位置开始比较,每次都会后移一位
            #需要一直对比到最后一位。
            if alist[min_index]>alist[i]:
                min_index=i
                #找到之后交换,需要退出循环
        alist[j],alist[min_index]=alist[min_index],alist[j]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值