1、排序算法
·冒泡排序 时间复杂度O(n^2)
·选择排序 时间复杂度O(n^2)
·插入排序 时间复杂度O(n^2)
·快速排序 时间复杂度O(nlogn)
·希尔排序
·堆排序
·归并排序 时间复杂度O(nlogn)
·计数排序:根据最大值和最小值确定范围,再将其数据放到指定位置,相同数据增计数加一
·桶排序:将待排序的元素放在各个桶中,桶中排序,再将各个桶合并
·基数排序
2、查找算法
·线性查找
按照顺序逐个比较,知道找到目标元素,时间复杂度O(n)
·二分查找(折半查找)
前提是有序数组,将目标值与中间值进行比较,时间复杂度为O(logn)
·哈希查找
通过哈希函数转化为数组下标,定位目标所在位置。常用方法包括直接寻址法,链地址法和开放寻址法
·树结构查找
构建对应树结构,如二叉搜索树,平衡二叉树(AVL),红黑树和B树等
·插值查找
基于二分查找增加自适应选择
·斐波拉契查找(黄金分割)
在二分查找的基础上根据斐波拉契数列进行分割
·分块查找
顺序查找的改进,分块后记录在索引表中
3、动态规划
动态规划是一种通过将问题分解为子问题并保存子问题的解来解决复杂问题的方法。常见的动态规划问题包括背包问题、最长公共子序列、最长递增子序列等。
4、 贪心算法
贪心算法是一种每步都选择当前最优解的策略,从而达到整体最优解的算法。经典的贪心算法包括活动选择问题、霍夫曼编码等。
5、字符串匹配算法
如暴力匹配、KMP算法、Boyer-Moore算法等
6、哈希算法
如散列函数、哈希表等。哈希算法用于将数据映射到固定大小的数组中,以实现快速的数据查找和插入。