排序算法练习比较有趣,之后的技术路线按照下表进行:

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。选择排序是一种基础的排序算法,其基于数组的数据结构进行的,因为他们在逻辑上相邻的元素在物理内存之上也是彼此相邻的。而且同一个数组的数据类型必须是一致的,这样我们就可以通过数组的下标[index]进行随机顺序访问数组中的元素。排序的基本思想是:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。通俗的说:选择排序就是通过数组下标,不断的选择最小的元素,直至无元素选择。

算法原理:

     1. 选择第一个元素的索引(确定规则:从小到大或从大到小)。

     2. 在剩下的元素中找到最小的数与之交换。

     3. 选择剩下元素的第一个位置索引,重复1.2步操作,即可实现选择排序。

算法实现:

#选择排序
def Selection_Sort(list2):for i in range(0, len (list2)-1):min_ = ifor j in range(i + 1, len(list2)):if list2[j] < list2[min_]:min_ = jlist2[i], list2[min_] = list2[min_], list2[i]print(list2)print('选择排序:', end=' ')print(list2)
#主函数
if __name__ =='__main__':List =np.random.randint(200, size=10)print('随机列表:',end = '')print(List)#Bubble_Sort(List)# 选择排序Selection_Sort(List)

注:实验中使用随机生成列表的方式,使用Python numpy 包。

效果显示:

时间复杂度:

选择排序的交换操作介于 0 和 (n - 1) 次之间。选择排序的比较操作为 n (n - 1) / 2 次之间。选择排序的赋值操作介于 0 和 3 (n - 1) 次之间。

比较次数O(n^2),比较次数与关键字的初始状态无关,总的比较次数N=(n-1)+(n-2)+...+1=n*(n-1)/2。交换次数O(n),最好情况是,已经有序,交换0次;最坏情况交换n-1次,逆序交换n/2次。交换次数比冒泡排序少多了,由于交换所需CPU时间比比较所需的CPU时间多,n值较小时,选择排序比冒泡排序快。

算法稳定性:

选择排序是给每个位置选择当前元素最小的,比如给第一个位置选择最小的,在剩余元素里面给第二个元素选择第二小的,依次类推,直到第n-1个元素,第n个元素不用选择了,因为只剩下它一个最大的元素了。那么,在一趟选择,如果一个元素比当前元素小,而该小的元素又出现在一个和当前元素相等的元素后面,那么交换后稳定性就被破坏了。所以选择排序是一个不稳定的排序算法。

Python 3 实现选择排序相关推荐

  1. Python数据结构:选择排序

    选择排序 先遍历一遍找到最小的,然后再遍历一遍找到第二个最小的- 先写一个最简单版的 def select_sort_simple(li):li_new = []for i in range(len( ...

  2. python 插入排序,选择排序

    插入排序: def insert_sort(lst):     for i in range(1,len(lst)):         x=lst[i]                         ...

  3. Python快速实现选择排序

    选择排序是一种简单直观的排序算法,它的时间复杂度是O(n²),不占用额外的空间,适合于数少时的排序 图片来源:选择排序 - Bing images def select_sort(li):# rang ...

  4. Python代码实现选择排序算法

    排序算法-选择排序 选择排序 将序列中的最大值找出,然后跟最后一个元素交换位置 循环执行步骤1 优化函数并封装成函数 # 步骤一 lst = [2, 5, 33, 6, 3, 8]index = 0 ...

  5. python 手写选择排序(不用sort)

    函数mysort(alist)用于计算包含数字的列表的排序(包括升序和降序.不能使用python中的函数sort或sorted). import random def section_sort1(al ...

  6. python排序算法---选择排序

    1.选择排序法定义 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻 ...

  7. 面试官:你都工作3年了,连选择排序法都不会,我怎么能选择你

    面试时,算法经常会遇到,特别是一些常见的算法. 张工毕业3年了,一直在一家创业公司做python开发,最近到某知名互联网公司面试,做了笔试题后,面试官看了觉得还不错,于是想进一步考察张工的编码能力,就 ...

  8. 【排序算法】python 十大经典排序算法(全网最详)

    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算法有:插入排序.希尔排序.选 ...

  9. python 数据结构与算法——排序

    文章目录 排序的分类 排序的复杂度 python 实现 冒泡排序 选择排序 插入排序 希尔排序 归并排序 堆排序 快排 树排序 线性时间排序算法 计数排序 桶排序 桶排序的复杂度分析 基数排序 排序的 ...

  10. python八大选择排序_Python实现选择排序

    选择排序: 选择排序(Selection sort)是一种简单直观的 排序算法 .它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最 ...

最新文章

  1. Google:狡兔三窟
  2. 计算机无法显示移动硬盘,移动硬盘在我的电脑中不显示了 怎么处理?
  3. 浅聊一下各类以太网媒体接口MII/RMII/SMII/GMII/RGMII/SGMII
  4. 获取http请求标头_HTTP请求和标头参数的CDI拦截器–简单示例
  5. Oracle 11g-R2 SQL Developer连接MSSQL2008
  6. RPM软件包管理(安装、卸载、查询、制作)
  7. Atitit 软件开发中的艾提拉思想与理念总结 后端优先 手机优先 做好政治动员 高层抽象 一定要出理论结果书籍总结 技术就是艺术 三个软件层次的划分 实现层 规划层 艺术层 无限生
  8. 开源项目之MD5校验工具 md5deep
  9. 怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串
  10. 什么是登录Token
  11. 36氪开放日 —— 笔记
  12. 青出于蓝而胜于蓝 — Vue.js对Angular.js的那些进步
  13. 用于退出access的宏命令是_宏操作QuitAccess的功能是什么
  14. DGZX1564 - 水塔水位
  15. 镜头、CCD芯片、视场、物距之间的关系
  16. git clone 整个 group
  17. EXT4分区工具MiniTool Partition Wizard Home Edition
  18. 1. Redis--KEY(键)
  19. 20来行的Python拼写检查器
  20. DC-DC,看这篇文章就够了

热门文章

  1. C语言静态链表常用吗,C语言实现静态链表
  2. Javascript:json删除键为指定数据的值
  3. HTML:页面布局和背景
  4. 时间和日期的JS库Day.js入门教程
  5. dedecms 判断是否有值然后显示
  6. Mysql 数据库中Where 关键字的使用
  7. 自动驾驶_视觉定位_高德公开课
  8. karto探秘之slam_karto
  9. python数据分析之(6)简单绘图matplotlib.pyplot
  10. 非递归方式对二叉树进行前序、中序、后序遍历(C++实现)