学点算法:简单选择排序

简单选择排序的思路主要是:先拿出数组的第一个元素,与该数组之后的元素中最小(大)的那个元素交换位置,接下来拿出数组第二个元素,继续与这个数组之后的最小(大)的那个元素交换位置,以此类推。

在网上看到说这个算法"不稳定",原来是因为在使用选择排序的过程中,两个相同大小的元素的相对位置被打破了,就称为算法"不稳定"。

举个例子:[5,6,8,5,3,7] 用上面的算法,我们会看到第一个 5 和 3交换了位置,但是它 和第二个5的相对顺序位置被改变了。

python实现上面的算法:

def select_sort(origin_items, comp=lambda x, y: x < y):
         """简单选择排序"""
    items = origin_items[:]
    for i in range(len(items) - 1):
        min_index = i
        for j in range(i + 1, len(items)):
            if comp(items[j], items[min_index]):
                min_index = j
        items[i], items[min_index] = items[min_index], items[i]
    return items

注: lambda x, y: x < y 指的是定义一个函数,传入参数 x, y ,返回 x<y 的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值