1. 搜索算法
关于搜索算法的一些介绍
-
线性查找: 依次检查数组中的每个元素。
时间复杂度为 O(n) - 二分查找: 将目标值与已排序数组的中间元素比较,并缩小查找范围至。
时间复杂度:O(对数₂n)
2. 排序算法篇
-
冒泡排序: 在每次遍历中交换相邻的元素。
时间复杂度为 O(n²) -
插入排序: 将元素插入到已排序部分的正确位置。
所需时间复杂度: O(n²). -
选择排序 (Selection Sort): 每次从未排序的元素中选择最小值。
时间复杂度:O(n^2) -
堆排序: 利用堆结构对元素进行排序。
时间复杂度:O(n log n) -
归并排序: 归并排序是一种分治算法,将数组分成两部分,接着分别排序,最后再合并。
时间复杂度:O(n log n) - 快速排序: 使用一个基准将数组划分并递归地进行排序。
时间复杂度:— O(n log n)(平均情况),O(n²)(最坏情形)。
注意:原文中的破折号应为中文破折号,但由于输入限制,这里使用了英文破折号代替。
第三部分:基础数学算法
- 欧几里得算法求最大公约数: 通过排除倍数来找出最大公约数。
- 埃拉托色尼筛法: 通过排除倍数来找出素数。
- 位操作技巧: 使用位运算符进行低级操作。
4. 图论算法介绍
4. Introduction to Graph Algorithms
- 广度优先搜索(BFS): 按层遍历使用队列。
- 深度优先搜索(DFS): 深入探索使用栈。时间复杂度为 O(V + E)
- Dijkstra算法: 找到加权图中最短路径。
5. 树相关的算法
- 前序遍历: 左子树 → 根节点 → 右子树。
- 中序遍历: 根节点 → 左子树 → 右子树。
- 后序遍历: 左子树 → 右子树 → 根节点。时间复杂度为 O(n)
- 克鲁斯卡尔算法: 通过按权重顺序添加边,找到最小生成树。
6. 动态规划.
- 佛洛依德-华沙尔算法: 计算加权图中所有点对之间的最短路径。使用记忆化(自顶向下(递归))和动态规划(表格法)(自底向上(迭代))。
第七. 回溯算法。
- 解决像N皇后、子集和、图着色和哈密顿回路这样的问题。
8. 哈夫曼编码
- 通过根据字符出现频率分配编码并建立Huffman树(Huffman树)来压缩数据。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦