NumPy三种排序的表现与思考

简介: NumPy排序法自我认为,并不是哪个排序算法速度快,或者稳定性高,就在项目中频繁的进行使用,这个跟我们开发的项目大小和环境也有一定的关系吧,选择合理的排序算法,也是能提高项目性能的。

Numpy库给我们提供了三种数组排序的算法:

  1. 快速排序(Quicksort): 所谓快速排序就是一种就地排序算法。就地是啥意思?就是它不会创建原数组的一个副本,而是和原数组共用数据,直接修改原数组的结构--对标三国演义有些类似司马懿夺取魏国,殿宇啥的都不换,我就换你曹魏的内部,哈哈。
  2. 归并排序(mergesort): 归并排序使用的打法是合并操作对数组进行排序,通常将数组分为两半,分别进行排序,然后将分别排序好的两半再进行合并。这个“典故”相似于赤壁之战的孙刘联军。哎,我们先在一起商议,然后分头行动,最后在汇合共同击退敌人。
  3. 堆排序(heapsort): 堆排序是怎么个情况呢?它是使用堆数据结构来管理无序的数据集,近似于一个二叉树,有最大堆和最小堆。大堆的节点关键字大于或等于小堆的节点关键字。这就好比于三国中的前期,袁绍率领的18路诸侯,他做盟主,下面有18路大军,18路大军下有许许多多的小股势力一样。


以上就形象的介绍下三大排序算法的区别,如有不妥敬请谅解吧!


下面我们就实战一下三种排序在代码中的表现如何。

表现

为了公平起见,我们使用NumPy库给我们提供的sort()函数进行测试,先来看下sort()函数的格式和所需参数。


格式:numpy.sort(a, axis, kind, order)


参数:a:需要排序的数组;axis:数组的轴;kind: 排序算法;order:排序的字段


我们主要是测试kind参数,其他参数暂时不使用。

第一项:速度

1716617872216.jpg

经过测试,在速度方面,快速排序(39毫秒) 、 归并排序(54毫秒) 、 堆排序(76秒)。

第二项:稳定性

稳定性方面是这么进行定义的,我们可以使用numpy库给我们提供的argsort函数来进行排序算法的稳定性,argsort函数函数返回的是元素排序后的索引值,如果原数组之前的排序的索引不变,那么说明排序算法是稳定的。我们根据稳定性的定义一个个的进行测试一下。

1716617902960.jpg

经过测试以后,这三种排序怎么都是不稳定的呢?然后去翻了翻文档,但是文档中提供的是:


quicksort:不稳定;mergesort:稳定;heapsort:不稳定。


这边也有函数调用的说明,截图给大家看一下。

1716617925467.jpg

这个地方我也是没有想明白😓😵,但是还是得写出来,我相信掘友的力量是无穷的会帮我解决。

思考

NumPy排序法自我认为,并不是哪个排序算法速度快,或者稳定性高,就在项目中频繁的进行使用,这个跟我们开发的项目大小和环境也有一定的关系吧,选择合理的排序算法,也是能提高项目性能的。


还有就是在以后的新知识学习的时候,我感觉一定要动手去做,才会发现意想不到的结果吧。

相关文章
|
1月前
|
BI 索引 Python
利用Numpy读取iris数据集并进行排序、去重、求统计量等操作实战(附源码)
利用Numpy读取iris数据集并进行排序、去重、求统计量等操作实战(附源码)
97 0
|
1月前
|
搜索推荐 数据挖掘 数据处理
NumPy数组统计与排序方法全览
【4月更文挑战第17天】本文介绍了NumPy在Python中的数组统计和排序功能。主要包括计算平均值、标准差和方差的`np.mean()`, `np.std()`, `np.var()`方法,以及求最大值、最小值、百分位数的功能。在排序方面,讲解了基本排序的`np.sort()`,获取排序索引的`np.argsort()`,逆序排序和随机排序的方法。这些工具对于数据分析和科学计算十分实用,能有效提升数据处理效率。
|
6月前
|
IDE 搜索推荐 开发工具
Python 教程之 Numpy(11)—— 排序、搜索和计数
Python 教程之 Numpy(11)—— 排序、搜索和计数
38 0
|
9月前
|
SQL 索引 Python
【NumPy 数组连接、拆分、搜索、排序】
【NumPy 数组连接、拆分、搜索、排序】
|
存储 数据可视化 数据挖掘
【Numpy】数组的创建和常用函数(排序、连接、属性、reshape、索引和切片)
【Numpy】数组的创建和常用函数(排序、连接、属性、reshape、索引和切片)
167 0
【Numpy】数组的创建和常用函数(排序、连接、属性、reshape、索引和切片)
|
机器学习/深度学习 搜索推荐 算法
第89天:NumPy 排序和筛选函数
第89天:NumPy 排序和筛选函数
86 1
|
1月前
|
存储 机器学习/深度学习 数据处理
NumPy:从初识到实战,探索Python科学计算的无限可能
NumPy:从初识到实战,探索Python科学计算的无限可能
43 0
|
2天前
|
BI 测试技术 索引
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)-1
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)
|
27天前
|
程序员 开发工具 索引
图解Python numpy基本操作
图解Python numpy基本操作
|
2天前
|
存储 API C语言
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)-2
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)