Python实现选择排序

 更新时间:2017年06月04日 11:30:41   作者:TingShuo  
选择法也算是入门的一种排序算法,比起冒泡法,它的方法巧妙了一些,它的出发点在于“挑”,每次挑选数组的最值,与前置元素换位,然后继续挑选剩余元素的最值并重复操作。个人认为选择排序的意义不在于排序本身,而在于挑选和置换的方法,对于一些问题很有帮助。

选择排序:

选择排序(Selection sort)是一种简单直观的 排序算法 。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。

Python 实现:

 # selection_sort.py
 def selection_sort(arr):
   count = len(arr)
   for i in range(count-1):  # 交换 n-1 次
     min = i
     # 找最小数
     for j in range(i, count):
       if arr[min] > arr[j]:
         min = j
     arr[min], arr[i] = arr[i], arr[min]  # 交换
   return arr
 
 my_list = [6, 23, 2, 54, 12, 6, 8, 100]
 print(selection_sort(my_list))

相关文章

  • 对Python3中的print函数以及与python2的对比分析

    对Python3中的print函数以及与python2的对比分析

    下面小编就为大家分享一篇对Python3中的print函数以及与python2的对比分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python Flask框架实现Proteus仿真Arduino与网页数据交互

    Python Flask框架实现Proteus仿真Arduino与网页数据交互

    这篇文章主要介绍了Python Flask框架实现Proteus仿真Arduino与网页数据交互,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-11-11
  • python使用redis模块来跟redis实现交互

    python使用redis模块来跟redis实现交互

    这篇文章主要介绍了python使用redis模块来跟redis实现交互,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • Python抓取百度查询结果的方法

    Python抓取百度查询结果的方法

    这篇文章主要介绍了Python抓取百度查询结果的方法,涉及Python正则匹配及字符串与URL操作的相关技巧,需要的朋友可以参考下
    2015-07-07
  • 书写Python代码的一种更优雅方式(推荐!)

    书写Python代码的一种更优雅方式(推荐!)

    Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,下面这篇文章主要给大家介绍了关于书写Python代码的一种更优雅方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • python使用post提交数据到远程url的方法

    python使用post提交数据到远程url的方法

    这篇文章主要介绍了python使用post提交数据到远程url的方法,涉及Python使用post传递数据的相关技巧,需要的朋友可以参考下
    2015-04-04
  • pytest解读fixtures之Teardown处理yield和addfinalizer方案

    pytest解读fixtures之Teardown处理yield和addfinalizer方案

    这篇文章主要为大家介绍了pytest解读fixtures之Teardown处理yield和addfinalizer的方案实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 解决PyCharm无法使用lxml库的问题(图解)

    解决PyCharm无法使用lxml库的问题(图解)

    这篇文章主要介绍了解决PyCharm无法使用lxml库的问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Python中getservbyport和getservbyname函数的用法大全

    Python中getservbyport和getservbyname函数的用法大全

    在Python的网络编程中,getservbyport()函数和getservbyname()函数是socket模块中的两个函数,因此在使用这两个函数时,需要导入socket模块,这篇文章主要介绍了Python中getservbyport和getservbyname函数的用法,需要的朋友可以参考下
    2023-01-01
  • django写用户登录判定并跳转制定页面的实例

    django写用户登录判定并跳转制定页面的实例

    今天小编就为大家分享一篇django写用户登录判定并跳转制定页面的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08

最新评论