选择排序( Selection sort)

1.算法描述:

通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录进行交换。

  • 对尚未完成排序的所有元素,从头到尾比一遍,记录下最小的那个元素的下标,也就是该元素的位置,
  • 把该元素交换到当前遍历的最前面。
  • 其效率之处在于,每一轮中比较了很多次,但只交换一次,
  • 因此虽然它的时间复杂度也是O(n^2),但比冒泡算法还是要好一点。

2.算法属性:

  • 时间复杂度:O(n^2)
  • 空间复杂度:O(1)
  • 稳定性:不稳定
  • 不稳定性介绍:list里面重复元素可能会因选择后改变前后顺序
  • O(1) 额外的空间
  • O(n2 ) 对比
  • O(n) 互换
  • 不具有适应性:不像冒泡那样可以加flag来改善

3.代码实现

#kumata's code
#算法复杂度O(n^2)
#找到最小的元素就和第一个index交换
#从小到大排

import timedef selection_sort(nums=list):start = time.time()#第一层选择第n小的元素下标for i in range(len(nums)):    # n pos_min = i     # Index#第二层遍历找出需要交换的元素下标for j in range(i + 1,len(nums)):if nums[pos_min] > nums[j]:pos_min = j#交换嘻嘻nums[i],nums[pos_min] = nums[pos_min],nums[i]t = time.time() - startreturn nums,tnums = [1,2,5,8,4,3,6]
selection_sort(nums)#输出结果
([1, 2, 3, 4, 5, 6, 8], 0.0)

转载于:https://www.cnblogs.com/kumata/p/9119351.html

选择排序之python相关推荐

  1. 最少交换次数python_史上最简单!冒泡、选择排序的Python实现及算法优化详解

    1.排序概念 内部排序和外部排序 根据排序过程中,待排序的数据是否全部被放在内存中,分为两大类: 内部排序:指的是待排序的数据存放在计算机内存中进行的排序过程: 外部排序:指的是排序中要对外存储器进行 ...

  2. 选择排序法python详解-Python选择排序算法(三)

    优化选择排序算法,大致思路是每次循环分别找到最大值和最小值,放到列表的头部和尾部 代码如下: #! coding:utf8 import random def select_sort(arr): fo ...

  3. 排序算法-05简单选择排序(python实现)

    简单选择排序 概述 顾名思义,这是一种选择排序. 其步骤大致是,每一趟排序从待排记录中找到一个最小的关键字,放到已排序记录末尾,知道排序结束. 算法详解 首先,从待排记录中找到最小元素 如果最小元素不 ...

  4. 选择排序算法python

    选择排序定义: https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行 ...

  5. python算法与数据结构-选择排序算法(33)

    阅读目录 一.选择排序的介绍 二.选择排序的原理 三.选择排序的图解 四.选择排序总结 五.选择排序的python代码实现 六.选择排序的C语言代码实现 七.选择排序的时间复杂度 八.选择排序的稳定性 ...

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

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

  7. python实现选择排序

    python实现选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置:接着,再从剩余 ...

  8. python遍历数组冒泡排序_经典排序算法(冒泡排序,选择排序,插入排序,快速排序,堆排序)python实现...

    最近在复习经典排序算法,自己用python也实现了一下,这里不会涉及到原理(因为网上方法已经很详细啦),就把函数贴上来,可以让大家自己试着运行下,再结合别处的原理也可以更好地理解它们的实现. 如果有错 ...

  9. python 选择排序算法

    一.选择排序(selection sort) 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位 ...

  10. python基础:冒泡和选择排序算法实现

    冒泡排序和选择排序 首先引用一下百度百科对于冒泡算法的定义: 冒泡排序算法的原理如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一 ...

最新文章

  1. 单臂路由(实现VLAN间通信)
  2. Ubuntu12.10编译openwrt遇到的错误
  3. ddr4 lpddr4区别_iFixit 拆解 iPhone 12 系列:仍使用 LPDDR4 内存 | 爱搞机
  4. java创建配置文件_java – 如何创建紧凑的配置文件
  5. javascript中的异步编程
  6. D. Mahmoud and Ehab and the binary string Codeforces Round #435 (Div. 2)
  7. mysql 重置密码模式_mysql--重置密码
  8. 六个 Linux性能监控命令行工具
  9. 3.7亿条保单数据怎么分析?这个大数据平台有绝招
  10. 打造自己的专业图像工具-Visual C++ 2005图像编程系列【一】
  11. C基础--队列的构造
  12. Python代码打包在xp系统上运行~~
  13. shopex mysql索引_shopex数据库表结构说明文档.doc
  14. 电子取证-----仿真技术
  15. 逆向——微信接收文本图片消息
  16. Trembling ! Java类的加载过程详解(加载验证准备解析初始化使用卸载)
  17. [C]C语言基本语句(5/7)→ 用scanf语句输入int, float, double, char型数据
  18. 概率与数理统计-笔记说明
  19. 抖音电商主播运营技巧话术脚本策划方案带货流程计划表格
  20. Pdfium.Net SDK增强您的功能快速生成PDF

热门文章

  1. 对不起,又秀了一波恩爱!
  2. 程序员必备简捷开发辅助工具总结
  3. android 混淆打包教程,Android 混淆打包
  4. 验签传时间戳目的_不瞒你说:买来的海鸭蛋,一戳就流油,被中央台频频“曝光”,秘密终被解开...
  5. 时间序列分析导论书摘:确定自回归过程的阶数
  6. python基础之python介绍
  7. BZOJ2425: [HAOI2010]计数
  8. JavaMaven【三、常用指令】
  9. [android]netd与NetworkManagementService初印象
  10. 继Spring 会议个人计划统计(补)