为了账号安全,请及时绑定邮箱和手机立即绑定

必知的几种算法讲解

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 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消