当前位置: 首页 > news >正文

软设之排序算法对比

直接插入 

时间复杂度:平均情况为O(n^2)。特殊情况下基本有序最优为O(n)

空间复杂度:O(1)

希尔排序

时间复杂度:平均情况O(n^1.3)

空间复杂度:O(1)

直接选择排序

时间复杂度:O(n^2)

空间复杂度:O(1)

堆排序

时间复杂度:O(nlog(2)n)

空间复杂度:O(1)

冒泡排序

时间复杂度:平均情况O(n^2)

空间复杂度:O(1)

快速排序

时间复杂度:平均情况O(nlog(2)n),基本有序最差是O(n^2)

空间复杂度:O(1)

归并排序

时间复杂度 O(nlog(2)n)

空间复杂度O(n)

基数排序

时间复杂度:O(d(n+rd))

空间复杂度:O(rd)

排序算法选择

如果数据元素数目n比较小,可采用直接插入排序和简单选择排序

如果要排列记录基本有序,可以采用直接插入排序或冒泡排序

如果数据数目很大,应采用时间复杂度为O(nlog(2)n)的排序方法。

快速排序目前被认为是内部排序中最好的方法,如果待排序的关键字为随机分布,快速排序的平均运行时间最短

堆排序只需要一个辅助空间,并且不会出现在快速排序中可能出现的最快情况

快速排序和堆排序都是不稳定的排序方法,如果追求排序稳定,可选择归并排序。

http://www.lryc.cn/news/362069.html

相关文章:

  • javascript导入excel文件
  • 「C系列」C 变量及常见问题梳理
  • <网络安全VIP>第二篇《工业控制软件》
  • 微服务:Rabbitmq中的不同交换机的使用Fanout、Direct、Topic(消息队列中间件)
  • 数据结构单链表的前插法实现
  • Cocos Creator开发学习路线
  • C语言:IO操作
  • 算法 | 刷题日记
  • 微信小程序登录接口
  • VBA实战(Excel)(5):介绍一种排列组合算法
  • 迭代器的使用
  • 安卓手机APP开发___广播概述
  • 【封装】Unity切换场景不销毁物体
  • 基于学习的决策树
  • godot.bk2
  • STM32 IIC 使用 HAL 库操作eeprom
  • YOLOv8+PyQt5海洋船只检测(可以重新训练,yolov8模型,从图像、视频和摄像头三种路径识别检测)
  • PCL 高阶多项式曲线回归拟合(二维)
  • 深入理解 Python3 函数:从基础语法到高级应用
  • 03_初识Spring Cloud Gateway
  • python数据分析——线性模型
  • 网络原理——HTTP/HTTPS ---- HTTPS
  • 网络协议二
  • 内存映射mmap技术详解
  • react 合成事件
  • springboot配置集成RedisTemplate和Redisson,使用分布式锁案例
  • 随机数相关
  • EulerMaker Yocto Open Build Service
  • SQL面试问题集
  • 基于单片机的八路抢答器设计论文