![](https://img-blog.csdnimg.cn/0191661a274e4522991892eeb47c1b4c.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
数据结构与算法
我的天才女友
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
展开
-
广度优先算法
公交倒车到达目的地,在朋友或者朋友的朋友类推找找寻满足条件朋友。这样的方法,最好的实现便是广度优先。使用队列数据结构,不断添加新的元素,队列中先进先出的结构,使其数据不断循环,知道找到合适的数据。...原创 2022-06-08 21:12:34 · 58 阅读 · 0 评论 -
简析递归算法
递归自己调用自己就是递归实现n的阶乘:def factorial(n): if n == 1: return 1; else: return n * factorial(n - 1)这样就实现了一个计算一个数的阶乘,这里阶乘有两个关键的条件,n == 1 和 n != 1,被称为基线条件和递归条件,如果条件没有写好的话,会造成无限循环。栈是一种数据结构,先进先出的,也叫压入和弹出。看看5的阶乘是如何调用的呢?第一次n=5当函数被执行完毕,也原创 2021-12-21 01:37:47 · 507 阅读 · 0 评论 -
数组和链表
计算机存储计算机的存储就像是连续的抽屉一样,存储变量。数组便是连续储存在计算机上,而链表可以随机储存在计算机的任意抽屉上,上一个变量存储了下一个变量的位置。访问数组支持随机访问,而链表支持顺序访问,在算法上来说数组O(1),而链表就是O(n)。插入因为数组是连续的,插入元素需要在计算机中找到连续的存储空间,如果从中间插入的话,后续的所有元素都需要移动,故而为O(n),链表只需要将元素修改为一下个地址即可为O(1)。删除数组和链表都是一样的为O(1).总的来说数组适合于经常读,而链表适合于经原创 2021-12-20 11:59:34 · 457 阅读 · 0 评论 -
简析回溯算法
回溯算法非常好用的一种算法。通俗的来说就是将所有的数据转化为树形结构,依次往下走,走不下去可以退回去的一种算法。例子1 数组返回不同排列的值给定一个可重复的数组,按照不同的顺序组合成不同的集合,有多少种。分别是什么?int scores2[] = new int[]{1,2,3};[1, 2, 3][1, 3, 2][2, 1, 3][2, 3, 1][3, 1, 2][3, 2, 1]int scores2[] = new int[]{1,3,3};[1, 3, 3][3,原创 2021-12-16 19:57:11 · 195 阅读 · 0 评论