你好,我是悦创。
最近在给私教学员上课,临近考试。汇总常见的排序算法、查找算法定义、特点、缺点、时间复杂度等表格。

排序算法

算法类型定义特点缺点平均时间复杂度最坏时间复杂度最好时间复杂度空间复杂度
冒泡排序通过重复遍历要排序的列表,比较每对相邻元素,若顺序错误则交换,直到无需再交换实现简单,稳定排序效率较低,尤其是在大数据集上O(n^2)O(n^2)O(n)O(1)
选择排序在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。实现简单效率低下,不稳定排序O(n^2)O(n^2)O(n^2)O(1)
插入排序通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。稳定排序,对于部分已排序数据效率较高当输入序列为反向排序时性能最差O(n^2)O(n^2)O(n)O(1)
快速排序从数列中挑出一个元素,作为"基准"(pivot),重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。高效,适合大数据集不稳定,递归深度大时消耗内存O(n log n)O(n^2)O(n log n)O(log n)
归并排序采用分治法(Divide and Conquer),首先将问题分成一些小的问题然后递归解决,而治的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之。稳定排序,适合大数据集需要额外的内存空间O(n log n)O(n log n)O(n log n)O(n)

查找算法

算法类型定义特点缺点平均时间复杂度最坏时间复杂度最好时间复杂度
线性查找从数据结构中顺序地查找每一个元素,直到找到所需的特定元素或搜索到结构末尾。实现简单效率低,尤其是在数据集大的情况下O(n)O(n)O(1)
二分查找在有序的数组中,首先与中间的元素进行比较,如果目标值大于或小于中间元素,则在大于或小于中间元素的那半数组中查找,以此类推,递归进行,直到找到目标值。快速查找速度需要数据先进行排序,且只适用于数组O(log n)O(log n)O(1)
哈希查找通过哈希表,根据

关键字Key直接进行访问的数据映射算法,以空间换时间。 | 查找速度极快,适合频繁查找 | 哈希表的构造复杂,冲突处理可能增加时间成本 | O(1) | O(n) | O(1) |

这些是常见的排序和查找算法的基本信息,可以根据具体需求选择合适的算法进行实现。

更多优质内容,查阅AI悦创官网:https://bornforthis.cn/

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐