位置: 编程技术 - 正文

八大排序算法的Python实现(八大排序算法的时间空间复杂度)

编辑:rootadmin

推荐整理分享八大排序算法的Python实现(八大排序算法的时间空间复杂度),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:八大排序算法的特点,八大排序算法的缺点,八大排序算法的时间复杂度,八大排序算法的缺点,八大排序算法的时间空间复杂度,八大排序算法的特点,八大排序算法的时间复杂度,八大排序算法的时间空间复杂度,内容如对您有帮助,希望把文章链接给更多的朋友!

Python实现八大排序算法,具体内容如下

1、插入排序描述

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。

代码实现

2、希尔排序描述

希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。

代码实现

3、冒泡排序描述

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

代码实现

4、快速排序描述

八大排序算法的Python实现(八大排序算法的时间空间复杂度)

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

代码实现

5、直接选择排序描述

基本思想:第1趟,在待排序记录r1 ~ r[n]中选出最小的记录,将它与r1交换;第2趟,在待排序记录r2 ~ r[n]中选出最小的记录,将它与r2交换;以此类推,第i趟在待排序记录r[i] ~ r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。

代码实现

6、堆排序描述

堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。

代码实现

7、归并排序描述

归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k]中,并令i和k分别加上1;否则将第二个有序表中的元素a[j]复制到r[k]中,并令j和k分别加上1,如此循环下去,直到其中一个有序表取完,然后再将另一个有序表中剩余的元素复制到r中从下标k到下标t的单元。归并排序的算法我们通常用递归实现,先把待排序区间[s,t]以中点二分,接着把左边子区间排序,再把右边子区间排序,最后把左区间和右区间用一次归并操作合并成有序的区间[s,t]。

代码实现

8、基数排序描述

基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。

代码实现

标签: 八大排序算法的时间空间复杂度

本文链接地址:https://www.jiuchutong.com/biancheng/381285.html 转载请保留说明!

上一篇:详解C++编程中一元运算符的重载(c++ 编程)

下一篇:使用python实现省市三级菜单效果(python中的省略号怎么打)

  • 个人注册电子税务局
  • 出口免税收入的计税依据
  • 利润表中其他业务利润是什么
  • 其他收益科目在哪个科目前面填
  • 个税身份证验证不通过已经申报缴税
  • 不动产什么时候可以抵扣进项税额
  • 注册资本需要实交吗
  • 公司账外现金
  • 已经认证的发票红冲发票需要收回原发票吗
  • 物流公司进项发票分录
  • 经销商注册什么公司
  • 购物中心联营扣点
  • 工程服务预交税款怎么账务处理?
  • 结转劳务费
  • 企业注销时有未抵扣的留抵
  • 厂房进项抵扣
  • 进项票已认证忘记开票
  • 防暑降温需要缴什么费用
  • 购买房产,税费怎么计算
  • 红字发票勾选平台里有吗
  • 外贸企业出口货物会计账务处理
  • 不动产测绘费谁交
  • 股东以个人名义签订租赁合同
  • 劳务公司的主营业务成本是人工工资需要个人开发票吗?
  • 营改增后城建税怎么算
  • 动车票的税进行抵扣该填写在哪里
  • 金三接口调用失败怎么办?
  • 工程预收款账务处理
  • 公司增资减资法条
  • 收到其他公司退款
  • 高新技术企业研究开发费用加计扣除
  • 无生产怎样结转成本费用
  • 企业工会经费计提比例
  • win11多开
  • 增值税进项税抵扣销项税
  • 个人减免税政策6条
  • 会计准则长期待摊费用开始计提摊销的时间
  • yii框架怎么样
  • php获取地理位置
  • chatGPT之Python API启用上下文管理
  • 律师事务所主要业务范围介绍
  • 公司现金发放证明
  • 代收代付业务需要开发票吗
  • 普通发票作废算额度吗
  • 购买方享受的现金折扣
  • 哪些福利不需要交个税
  • 个人所得税专项附加扣除赡养老人
  • 发票丢失了怎么报销
  • sql纵表转横表
  • 间接人工费用计入什么科目
  • 个体工商户不经营需要税务登记吗
  • 发票金额大于实际报销怎么做账
  • 政府代建工程
  • 接受捐赠的固定资产计入什么科目
  • 年底本年利润结转错了怎么调
  • 企业的经济补偿包括哪些
  • 案例分析以前年龄的变化
  • sqlserver存储过程if语句
  • mysql字符集设置命令
  • 畅游盈利
  • 微软补丁修复时出现蓝屏现象
  • win10启动项怎么设置
  • rtm平台全称
  • ubuntu ifdown
  • 如何快速删除windows.old
  • centos6基础命令
  • opengl教程48讲
  • 微信小程序实现微信支付
  • div +css
  • python获取数据包
  • javascript点击按钮改变字体颜色
  • android清理软件评测
  • unity meshcollider
  • jquery checkbox无法用attr()二次勾选问题的解决方法
  • 玉林税务局班子成员
  • 报税时一直显示申报中
  • 什么情况适用简易诉讼程序
  • 纳税人销售免征增值税
  • 税票开户银行怎么填写?
  • 辽宁省医保明细查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设