用Python实现选择排序
选择排序
选择排序(Selection sort)是⼀种简单直观的排序算法。它的⼯作原理如下。⾸先在未排序序列中找到最⼩(⼤)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最⼩(⼤)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换⼀对元素,它们当中⾄少有⼀个将被移到其最终位置上,因此对n个元素的表进⾏排序总共进⾏⾄多n-1次交换。在所有的完全依靠交换去移动元素的排序⽅法中,选择排序属于⾮常好的⼀种。
选择排序分析
排序过程:
代码实现:
def selection_sort(alist):n = len(alist)# 需要进⾏n-1次选择操作for i in range(n-1):# 记录最⼩位置min_index = i# 从i+1位置到末尾选择出最⼩数据for j in range(i+1, n):if alist[j] < alist[min_index]:min_index = j# 如果选择出的数据不在正确位置,进⾏交换if min_index != i:alist[i], alist[min_index] = alist[min_index], alist[i]alist = [54,226,93,17,77,31,44,55,20]
selection_sort(alist)
print(alist)
时间复杂度
- 最优时间复杂度:O(n 2 )
- 最坏时间复杂度:O(n 2 )
- 稳定性:不稳定(考虑升序每次选择最⼤的情况)
用Python实现选择排序相关推荐
- python八大选择排序_Python实现选择排序
选择排序: 选择排序(Selection sort)是一种简单直观的 排序算法 .它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最 ...
- python实现选择排序
python实现选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置:接着,再从剩余 ...
- python简单选择排序_Python实现冒泡,插入,选择排序简单实例
本文所述的Python实现冒泡,插入,选择排序简单实例比较适合Python初学者从基础开始学习数据结构和算法,示例简单易懂,具体代码如下: # -*- coding: cp936 -*-#python ...
- python写选择排序_如何快速掌握python选择排序算法?
对于算法,我们不少讲述,但是大部分小伙伴都希望,将单个算法拆分讲解,这样可以更加深对算法的印象,好了,本期,就针对选择排序算法,给大家讲解说明哦~感兴趣的小伙伴一起来看下吧~ 在列表list模块中,已 ...
- php和python的选择排序算法,图文讲解选择排序算法的原理及在Python中的实现
def sort_choice(numbers, max_to_min=True): """ 我这没有按照标准的选择排序,假设列表长度为n,思路如下: 1.获取最大值x, ...
- python八大选择排序_python之八大排序方法
排序方法 平均情况 最好情况 最坏情况 辅助空间 稳定性 冒泡排序 O(n^2) O(n) ...
- Python实现选择排序算法
第1关:选择排序 本关任务:首先给定一个长度大于1而且是乱序的列表,列表元素类型为整型,让后利用选择排序对列表元素进行排序,并输出每一次循环之后的结果. # 选择排序 arraystr = input ...
- Python版选择排序算法
关于Python版冒泡排序算法请参考Python版冒泡法排序算法. def selectSort(lst, reverse=False): length = len(lst) for i in ran ...
- python简单选择排序_python 选择排序
原博文 2018-09-21 23:46 − def select_sort(slist): for i in range(len(slist)): x = i for j in range(i, l ...
最新文章
- VMware虚拟机相关文件问题
- 第 1 章 虚拟化 - 013 - 动手实践 Linux VLAN
- ArrayList之坑点
- ubuntu source
- sql脚本对比工具_Java开发中用到的数据库迁移工具(flyway)
- 为今天的光纤检测选择光纤示波器
- 状态机学习(二)解析INI文件
- 直面桌面云带来的现状优势
- 提高个人执行力的途径
- 安卓逆向系列教程(三)静态分析工具
- 单线程JavaScript
- IDEA中使用JUnit4(单元测试框架)超详细!
- 台式计算机如何自动开关机,联想电脑怎么设置定时开机|联想台式机自动开机设置方法...
- 数学笔记27——极坐标下的面积
- iptables防火墙
- 超融合的网络bond和bridge模式。kvm+bond+bridge
- 光伏产业红与黑 需求寒冬背后暗藏分布式春天
- ES初探之——shard和replica
- 安卓手机重启日志_[手机维修自学教程]苹果安卓 手机无线重启故障原因维修技巧...
- 一个运动控制系统的实例