
数据结构
windmyself
深度学习 计算机视觉
展开
-
快速排序Python
def partition(arr, low, high): i = low - 1 pivot = arr[high] for j in range(low, high): if arr[j] <= pivot: i = i+1 arr[i],arr[j] = arr[j],arr[i] arr[i+1],arr[high] = arr[high],arr[i+1]# ??? return i+1def quick_sort(arr, low, high): if l原创 2021-07-01 15:14:40 · 102 阅读 · 0 评论 -
4-11数据结构与算法学习笔记(第一天)
4-11 坚持、积累数据结构知识图多练:王争说不用lc,只要把这个课掌握bat没问题。 lc一天至少一道!打怪升级攻略:每天发一篇优快云书读百遍,其义自见。不用百遍20遍就可以了原创 2021-04-11 10:09:36 · 95 阅读 · 0 评论 -
递归
递归:先要把递归出口写出来,1:递归终结条件;2:处理当前层逻辑;3:下探到下一层;4:清理当前层。上图是递归结构代码的4个模块。第一个模块:recursion terminator 递归终结者。(这一点不注意的话会造成无限循环。)所以上来先把递归终结者模块写好。第二个模块:process logic in current level 处理当前层逻辑。(在这一层就要把处理逻辑写好,就是要完成这一层进行的业务代码和逻辑代码。)第三个模块:drill down 下探到下一层。(这一层是通过参数标原创 2020-09-27 19:37:14 · 132 阅读 · 0 评论 -
二叉搜索树删除原则
当节点是叶子节点时,直接删掉。当不是叶子节点时,用比删除节点大的且最接近的那个节点来代替删除的节点。下图中删除41节点,那就是用比41节点大且离41节点最近的50节点替换41节点。...原创 2020-09-27 18:56:56 · 235 阅读 · 0 评论 -
跳表
看上图,在现实中应用跳表,会增加和删除导致跳表的索引并不是工整的,最后经过多次改动后有些地方会跨几步,有些地方会少跨几步,只跨两步。这是因为里面有些元素被增加和删除了。而且跳表的维护成本很高,每次增加或删除一个元素,跳表的索引都需要更新一遍,在这种增加或删除一个元素的情况下,他的时间复杂度是logn。...原创 2020-09-27 17:17:19 · 119 阅读 · 0 评论 -
时间复杂度
一个循环就是O(N)数组的随机查找:O(1);插入=删除:O(N);链表的查找:O(N);插入=删除:O(1);递归:O(logN);遍历二叉树:O(N);图的遍历:O(N);DFS BFS 深度优先和广度优先:O(N)PS:因为遍历二叉树 图 和深度优先广度优先都是所有的节点都遍历一次,所以时间复杂度都是O(N)二分查找:O(logN)...原创 2020-09-27 17:01:16 · 132 阅读 · 0 评论 -
空间复杂度总结
空间复杂度:如果是一个一维数组,那传入的数据是多少,空间复杂度就是多少。如果输入的数据是n个,那一维数组的空间复杂度就是O(N);同理,如果是二维数组且传入n个数据,那么这个二维数组的时间复杂度就是O(N^2)。对于递归来说,递归n层,那么时间复杂度就是O(N)。如果既有数组又有递归,那么空间复杂度取最大的那个。...原创 2020-09-27 16:48:15 · 4283 阅读 · 2 评论