python学习——python实现选择排序算法

一、选择排序算法实现原理

基本思想

  • 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
  • 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
  • 重复第二步,直到所有元素均排序完毕。

具体步骤

  1. 从第一个数开始计数基准(为最小值),记录下标
  2. 循环比较后面的数,记录比基准小的数的下标,直到最后一个数比较后,将当前最小值下标与基准替换
  3. 从下标为第几次循环开始继续1,2操作,直到循环列表长度-1的次数为止

二、图解选择排序

在这里插入图片描述

三、py代码实现选择排序算法

关键代码:

def select_sort(arr):
    """ 选择排序:先将第一次选择为最小的一个  然后对后面的所有进行选择,将最小的放入前面

    :param arr: 需要排序的数组
    """
    if len(arr) <= 1:
        return
    # 最小值从第一个开始
    i = 0
    # 外循环控制循环的次数 每一次循环结束,最小的数在最前面
    while i < len(arr):
     # 从第二个开始比较
        j = i + 1
        # 当前最小值下标
        minIndex = i
        # 内循环控制比较的次数
        while j < len(arr):
            # 如果当前比较值比最小值小  就记住当前下标为最小值下标
            if arr[j] < arr[minIndex]:
                minIndex = j
            j += 1
        # 将当前最小值替换当前面
        temp = arr[i]
        arr[i] = arr[minIndex]
        arr[minIndex] = temp
        i += 1
        

运行:

# 定义一个列表
arr = [2, 3, 1, 5, 10, 6, 3, 4, 8]
print(arr)
select_sort(arr)
print(arr)

打印结果:

[2, 3, 1, 5, 10, 6, 3, 4, 8]
[1, 2, 3, 3, 4, 5, 6, 8, 10]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值