排序算法——简单选择排序

简单选择排序是一种基础排序算法,其主要思想是在每趟遍历中找到最小(或最大)元素并放入已排序序列的末尾。由于在排序过程中可能会交换相同值元素的位置,所以它是不稳定的排序方法。提供的代码示例展示了如何用Python实现这一排序算法。
摘要由CSDN通过智能技术生成

简单选择排序的基本思想:

        每走一趟,都在待排序的元素中选择关键字最小【或最大】的元素加入有序子序列,如果数组中有n个元素,若进行简单选择排序,只需走n-1趟就可以,因为如果只剩最后一个的话,就不需要再选择最小【或最大】的元素了

实现过程:

        每次选择最小【或最大】的元素,添加在前面的有序序列中

     【绿色代表有序序列,橘色代表待排序序列】

 废话不多说,直接上代码:

arr = [2, 3, 67, 5, 56, 25, 56, 65]

# 只需循环 n-1 次
for i in range(len(arr)-1):
    # 从 i+1 的位置开始到最后,选择最小的元素,放在 i 的位置上
    for j in range(i+1, len(arr)):
        if arr[i] > arr[j]:
            arr[i], arr[j] = arr[j], arr[i]

print(arr)

运行结果为:

根据上面的实现过程以及代码,可以看出,简单选择排序的性能为:

 

 注意:上面的案例可能不能很好的体现出简单选择排序是否具有稳定性,我们只需要这样想一下,如果在运行过程中,可能会出现这种情况,有两个相同的元素:a,b【a在b的前面】,若这两个元素的后面出现一个比这两个元素小的元素:c,此时,a的位置刚好在有序序列的后面,这样就会将c与a的位置发生调换,这样的话,排序完之后,就很可能会出现b的位置在a前面的情况,因此,简单选择排序是不具备稳定性的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值