前端常见算法平常总结

数组排序算法

  • 冒泡排序
概述:两个for嵌套循环,每一项都要与其余任意一项对比排序。
时间复杂度: O(n^2)
空间复杂度: O(n^2)
适用范围: 简短的数组排序,稳定
  • 选择排序
概述:从后续未排序的序列中查询最大值与以前排序好的序列中末尾调换。
时间复杂度: O(n^2)
空间复杂度: O(n^2)
适用范围:简短的数组排序,稳定,不占用空间
  • 插入排序
概述: 选择初始排序点,从未排序数组中循环推出序列点并根据排序点组成的有序数组进行插入排序。
时间复杂度: O(n~n^2)
空间复杂度: O(n)
适用范围:排序顺序基本完成的数组
  • shell排序
概述:根据渐进简短的间隔进行分割数组排序,直至间隔为1则排序完成。通常取值在 五、二、1的顺序。
时间复杂度: O(n~n^1.3~n^2)
空间复杂度: O(n~n^2)
适用范围: 较长的数组混乱无规则o..的排序
  • 归并排序
概述:将数组分为若干个子数组进行排序,而后子数组进行两两循环归并排序。
时间复杂度:O(nlog2n)
空间复杂度:O(n)
适用范围: 较长数组
  • 快速排序
概述:持续从数组中选取基点进行左右部分区间的排序,直至子序列无基点选终止循环。
时间复杂度: O(nlogn ~ n^2)
空间复杂度:O(logn ~ n)
适用范围: 较长无序数组,绝大部分数组均可适用,效率相对最高

扩展算法

  • 堆排序算法
  • 二分查找算法
  • BFPRT算法
  • DFS(深度优先搜索)
  • BFS(广度优先搜索)
  • Dijkstra算法
  • 动态规划算法
  • 朴素贝叶斯分类算法
  • 回溯法
  • Diff算法
相关文章
相关标签/搜索