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

软件设计师-排序算法

冒泡排序

  • 每一趟冒泡排序,从第0个元素开始,和后面的元素比较,如果大于就交换,否则不变,每次冒泡可以把最大的元素放到最后一个,第一次冒泡的终点是n-1,第二趟的是n-2,直到最后剩下一个元素。
  • 时间复杂度O(n^2),稳定的排序算法

插入排序

  • 在插入第i个元素是,前i-1个元素已经排序好,将第i个元素和i-1,i-2依次比较,找到插入的位置,并把插入位置及以后的依次后移
  • 时间复杂度O(n^2),稳定的排序算法

归并排序

  • 两路归并排序的核心是将一维数组中前后相邻的两个有序序列归并为一个有序的序列
  • 分治思想,把数组分成两个部分,对前后两个部分作归并排序,排序完合并,使用了递归,最后只有一个元素的时候递归返回
  • 时间复杂度O(nlogn),空间复杂度O(n)

堆排序

  • 升序排序先构建大顶堆,然后每次把堆顶元素放到后面,再重新构建堆
  • 时间复杂度O(nlogn)

希尔排序

  • 取Gap作为增量,把相隔Gap的数字作直接插入排序,减少Gap直到1,数组有序
  • 不稳定的排序算法,时间复杂度O(nlogn),空间复杂度O(1)

快速排序

  • 使用分治思想,选择一个锚点,一次排序后比锚点小的都在左边,大的都在右边,根据锚点的位置,递归调用快速排序
  • 稳定,时间复杂度O(nlogn),空间复杂度O(logn)

http://www.kler.cn/a/396244.html

相关文章:

  • 2024 CCF中国开源大会“开源科学计算与系统建模openSCS”分论坛成功举办
  • 【知识科普】微内核架构与宏内核架构
  • 问:SQL优化,七条实践总结?
  • LeetCode59. 螺旋矩阵 II
  • Python学习26天
  • 机器学习、深度学习面试知识点汇总
  • 跟踪/追踪程序报错的方法
  • CSMM(软件能力成熟度评估)认证是什么?
  • BERT模型核心组件详解及其实现
  • 如何判断一个表达式是否是常量表达式?
  • BuyPass SSL证书:申请免费可用多域名SSL证书6个月180天
  • Day46 | 动态规划 :线性DP 最长递增子序列最长连续递增子序列
  • Python 正则表达式进阶用法:字符集与字符范围详解
  • 快速利用c语言实现线性表(lineList)
  • 批量规范化与ResNet-paddle
  • 华为云前台展示公网访问需要购买EIP,EIP流量走向
  • SOC Boot学习(三)——boot流程
  • 使用Fabric来实现远程服务器管理与自动化
  • 将多张图片按照顺序合并成一个PDF文件
  • react 中 useCallback Hook 作用
  • STM32学习笔记----时钟体系
  • 第9章 DIV+CSS布局作业
  • AGI自学分享,简单有用的理论与实践
  • 【pandas】常用方法积累
  • OceanBase 升级过程研究(4.2.1.6-4.2.1.8)
  • 【CSS问题】margin塌陷