python排序的三种方法(Python实现插入排序和选择排序的方法)
类别:脚本大全 浏览量:2648
时间:2021-10-03 01:40:08 python排序的三种方法
Python实现插入排序和选择排序的方法话不多说,让我们从最基本的排序算法开始吧
插入排序
如下图所示,插入排序的实现思路顾名思义,就是 不断地在一个已经是有序的数组中,寻找合适位置并插入新元素 。
具体实现步骤为:
首先我们把整个数组拆分为有序区间和未排序区间,有序区间在插入排序一开始只有一个元素,就是数组的第一个元素。
接在有序区间之后的一个元素就是准备插入的元素,在图中就是标为绿色的元素,在有序区间内寻找位置并插入。
其寻找逻辑为:从后往前依次进行比较,如果待插入元素大于当前元素,则将待插入元素插入到当前元素的后一位,如果待插入元素小于当前元素,则将当前元素后移一位。不断重复该过程直至到数组的最后一位
其实现的具体代码为:
|
def insertion_sort(a): length = len (a) if length < = 1 : return for i in range ( 1 ,length): j = i - 1 value = a[i] while j > = 0 : if a[j]<value: a[j + 1 ] = value break else : a[j + 1 ] = a[j] if j = = 0 : a[j] = value j - = 1 print (a) |
return a时间复杂计算为:我们需要将整个数组遍历一遍,所以这一部分为o(n),在每一次遍历中都要执行一次插入操作,其时间复杂度为o(n),所以总时间复杂度为o(n2)
选择排序
选择排序跟插入排序算法类似,都是将数组分为有序区间和未排序区间,区别在于插入排序是将一个新元素插入到有序区间内,而选择排序则是在未排序区间中找到最小元素,并交换到有序区间之后。
实现代码为:
|
def selection_sort(a): length = len (a) if length < = 1 : return for i in range ( 0 ,length - 1 ): min_value = a[i] min_index = i j = i + 1 while j<length: if a[j] < min_value: min_value = a[j] min_index = j j + = 1 a[i],a[min_index] = a[min_index],a[i] |
return a时间复杂度计算:数组长度为n,一共需要寻找n次最小值,每次寻找最小值都要遍历未排序区间一次,其时间复杂度为o(n),乘以n次为o(n2)
原文链接:https://segmentfault.com/a/1190000019151804
您可能感兴趣
- python 写入d盘文件(python文件写入write的操作)
- python class转json(Python对象转换为json的方法步骤)
- python调用excel教程(利用python在excel里面直接使用sql函数的方法)
- pythonjson库(Python常用的json标准库)
- python opencv图像表格处理(Opencv-Python图像透视变换cv2.warpPerspective的示例)
- python 自定义获取文件目录(Python使用os.listdir和os.walk获取文件路径与文件下所有目录的方法)
- python批量图像换背景(详解Python给照片换底色蓝底换红底)
- python设置微信(利用python实现在微信群刷屏的方法)
- python 调钉钉接口(python3实现钉钉消息推送的方法示例)
- python常用列表函数和方法(Python enumerate函数功能与用法示例)
- python numpy矩阵详解(基于Numpy.convolve使用Python实现滑动平均滤波的思路详解)
- pythonselenium自动化使用教程(selenium python 实现基本自动化测试的示例代码)
- 用python编写一个gui(用 Python 构建漂亮的 GUI)
- python中字典的值怎么应用(对python中字典keys,values,items的使用详解)
- python弹跳小球(python实现弹跳小球)
- Python实现FTP弱口令扫描器的方法示例(Python实现FTP弱口令扫描器的方法示例)
- 营养餐是什么(学校营养餐是什么)
- 谁说女子不如男 范冰冰演的武则天只是其一,另外两位你认识吗(谁说女子不如男)
- 杯酒人生---瓦伦丁酒杯和奥丁格啤酒(杯酒人生---瓦伦丁酒杯和奥丁格啤酒)
- 中秋节买啤酒,预算超过7元试试这8种啤酒,麦香浓郁都是真啤酒(预算超过7元试试这8种啤酒)
- CellPress旗下的6 期刊,国人友刊来了解一下吧(CellPress旗下的6期刊国人友刊来了解一下吧)
- ()
热门推荐
- 安装phpstudy注意哪些问题(phpstudy怎么卸载?phpstudy卸载图文教程)
- MySQL中interactive_timeout和wait_timeout
- docker部署带配置的镜像(docker安装fastdfs镜像的一些注意事项)
- apache服务器设置301(Apache Rewrite实现URL的301跳转和域名跳转)
- python排序方法简单(快速排序的四种python实现推荐)
- mysql的binlog日志详解(MySQL 有关MHA搭建与切换的几个错误log汇总)
- docker如何进入容器中(修改已有docker容器中的内容方法)
- laravel异步日志(laravel异步监控定时调度器实例详解)
- CSS错误排查方法
- vue 排班安排(vue实现钉钉的考勤日历)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9