| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 2022年1月12日学习总结 -> 正文阅读 |
|
[数据结构与算法]2022年1月12日学习总结 |
文章目录: dfs,bfs,以及快排 1.dfs DFS就是指:优先考虑深度,换句话说就是一条路走到黑,直到无路可走的情况下,才会选择回头,然后重新选择一条路。 适用的题目较为经典的有迷宫类型的题目,以及做数据排列类型的题目等 void dfs(int step){ 如果是迷宫 则dfs后括号里的条件可以换为开始时的坐标和开始的步数等; 但是迷宫最短路径一类的题目最好还是不要用bfs,用dfs会更为方便 迷宫一般分为以下几个部分: 地图部分,mp[Max_n][Max_n] 标记(遍历)部分vis[Max_n][Max_n] 路径部分road[Max_n][Max_n] 计数(方案数,步数等)sum/num; 2.bfs 与dfs不同,它是将图中所有顶点和弧线按照层来依次遍历 完整模板
【模板不是自己自创的多多见谅(>人<;)】 bfs多用于探索最短路径,最优解等问题的时候 3.快排 它是冒泡排序的优化方案,先选定一个基准数(一般为最左边的数字),设置两个指针(right/left)右边的指针往左走,左边的指针往右走(这里基准数在最左边,所以右边的指针先走,这点很重要)右边的指针找到比基准数小的数停下,同理左边的指针找到比基准数大的数停下,然后两者对应的数值交换;随后继续循环,知道两者指针重叠为止,再将重叠位置的数值与基准数交换,然后在基准数的左边/右边继续进行基准工作。快速排序的每一轮处理其实就是将这一轮的基准数归位,直到所有的数都归位为止,排序就结束了。 时间复杂度小的原因 快速排序之所以比较快,是因为与冒泡排序相比,每次的交换时跳跃式的,每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。这样在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之间进行交换,交换的距离就大的多了。因此总的比较和交换次数就少了,速度自然就提高了。 总结: 今天更近一步的了解了dfs,bfs以及快排背后的原理,但是对它们掌握程度还不够透彻;希望我能尽快熟练地运用o(* ̄▽ ̄*)ブ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 18:48:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |