选择排序之python
选择排序( 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相关推荐
- 最少交换次数python_史上最简单!冒泡、选择排序的Python实现及算法优化详解
1.排序概念 内部排序和外部排序 根据排序过程中,待排序的数据是否全部被放在内存中,分为两大类: 内部排序:指的是待排序的数据存放在计算机内存中进行的排序过程: 外部排序:指的是排序中要对外存储器进行 ...
- 选择排序法python详解-Python选择排序算法(三)
优化选择排序算法,大致思路是每次循环分别找到最大值和最小值,放到列表的头部和尾部 代码如下: #! coding:utf8 import random def select_sort(arr): fo ...
- 排序算法-05简单选择排序(python实现)
简单选择排序 概述 顾名思义,这是一种选择排序. 其步骤大致是,每一趟排序从待排记录中找到一个最小的关键字,放到已排序记录末尾,知道排序结束. 算法详解 首先,从待排记录中找到最小元素 如果最小元素不 ...
- 选择排序算法python
选择排序定义: https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行 ...
- python算法与数据结构-选择排序算法(33)
阅读目录 一.选择排序的介绍 二.选择排序的原理 三.选择排序的图解 四.选择排序总结 五.选择排序的python代码实现 六.选择排序的C语言代码实现 七.选择排序的时间复杂度 八.选择排序的稳定性 ...
- python八大选择排序_Python实现选择排序
选择排序: 选择排序(Selection sort)是一种简单直观的 排序算法 .它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最 ...
- python实现选择排序
python实现选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置:接着,再从剩余 ...
- python遍历数组冒泡排序_经典排序算法(冒泡排序,选择排序,插入排序,快速排序,堆排序)python实现...
最近在复习经典排序算法,自己用python也实现了一下,这里不会涉及到原理(因为网上方法已经很详细啦),就把函数贴上来,可以让大家自己试着运行下,再结合别处的原理也可以更好地理解它们的实现. 如果有错 ...
- python 选择排序算法
一.选择排序(selection sort) 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位 ...
- python基础:冒泡和选择排序算法实现
冒泡排序和选择排序 首先引用一下百度百科对于冒泡算法的定义: 冒泡排序算法的原理如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一 ...
最新文章
- 单臂路由(实现VLAN间通信)
- Ubuntu12.10编译openwrt遇到的错误
- ddr4 lpddr4区别_iFixit 拆解 iPhone 12 系列:仍使用 LPDDR4 内存 | 爱搞机
- java创建配置文件_java – 如何创建紧凑的配置文件
- javascript中的异步编程
- D. Mahmoud and Ehab and the binary string Codeforces Round #435 (Div. 2)
- mysql 重置密码模式_mysql--重置密码
- 六个 Linux性能监控命令行工具
- 3.7亿条保单数据怎么分析?这个大数据平台有绝招
- 打造自己的专业图像工具-Visual C++ 2005图像编程系列【一】
- C基础--队列的构造
- Python代码打包在xp系统上运行~~
- shopex mysql索引_shopex数据库表结构说明文档.doc
- 电子取证-----仿真技术
- 逆向——微信接收文本图片消息
- Trembling ! Java类的加载过程详解(加载验证准备解析初始化使用卸载)
- [C]C语言基本语句(5/7)→ 用scanf语句输入int, float, double, char型数据
- 概率与数理统计-笔记说明
- 抖音电商主播运营技巧话术脚本策划方案带货流程计划表格
- Pdfium.Net SDK增强您的功能快速生成PDF
热门文章
- 对不起,又秀了一波恩爱!
- 程序员必备简捷开发辅助工具总结
- android 混淆打包教程,Android 混淆打包
- 验签传时间戳目的_不瞒你说:买来的海鸭蛋,一戳就流油,被中央台频频“曝光”,秘密终被解开...
- 时间序列分析导论书摘:确定自回归过程的阶数
- python基础之python介绍
- BZOJ2425: [HAOI2010]计数
- JavaMaven【三、常用指令】
- [android]netd与NetworkManagementService初印象
- 继Spring 会议个人计划统计(补)