python 选择排序及其优化

本文介绍了选择排序算法,强调其运行时间和输入无关且数据移动最少的特点。详细阐述了选择排序的基本步骤,并提供了原始代码。文章还探讨了优化选择排序的尝试,如一次找出两个元素进行排序,但指出优化效果有限。实验结果显示,与冒泡排序相比,选择排序在效率上有一定优势。
摘要由CSDN通过智能技术生成

部分转自    https://blog.csdn.net/Dby_freedom/article/details/82154869

 

介绍 :

          选择排序是一个很容易理解和实现的简单排序算法. 学习它之前首先要知道它有两个很鲜明的特点

1. 运行时间和输入无关

      选择排序,是通过每次选择最小的数或者最大的数,然后将它放在它应该出现的位置上。 

      所以,选择排序的时间复杂度是O(N*N),不管是最好情况还是最坏情况,找最小数的过程都需要遍历一遍,所以,选择排序最好情况也是O(N*N)。

       因此,使用这种算法的我们会惊讶的发现,一个已经有序的数组或者数组内元素全部相等和一个打乱的序列所用的时间是一样长的

 2. 数据移动是最少的

       选择排序的交换次数和数组大小关系是线性的,选择无疑是最简单直观的排序.看下面的原理时可以很容易明白这一点

 

步骤:

  1. 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
  2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
  3. 以此类推,直到所有元素均排序完毕。

 

代码

def select_sort(lst):
    n = len(lst)
    for i in range(n):
        min = i
        for j in range(i+1,n):
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值