![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与基础算法
数据结构与基础算法
老卫带你学
专注AI,云计算
展开
-
老卫带你学---斐波那契数列四种解法
老卫带你学—斐波那契数列四种解法1、暴力递归斐波那契数列的数学形式就是递归的,写成代码就是这样:def fib(n): if n==1: return 1 elif n==2: return 1 else: return fib(n-1)+fib(n-2)这个不用多说了,学校老师讲递归的时候似乎都是拿这个举例。我们也知道这样写代码虽然简洁易懂,但是十分低效,低效在哪里?假设 n = 20,请画出递归树:这个递归树怎么理解原创 2020-10-04 20:42:32 · 2284 阅读 · 0 评论 -
老卫带你学---B+树总结
B+树总结B+树特征B+ 树是一种树数据结构,是一个n叉树,每个节点通常有多个孩子,一颗B+树包含根节点、内部节点和叶子节点。B+ 树通常用于数据库和操作系统的文件系统中。 B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。 B+ 树元素自底向上插入。一个m阶的B树具有如下几个特征:1.根结点至少有两个子女。2.每个中间节点都至少包含ceil(m / 2)个孩子...原创 2020-03-31 15:39:53 · 293 阅读 · 0 评论 -
老卫带你学---排序、查找、树图的时间复杂度
排序、查找、树图的时间复杂度(1)冒泡排序冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。(2)选择排序选择排序是给每个位置选择当前元素最小的,比如给第一个位置选择最小的。…… 例子说明好多了。序列5 8 5 2 9, 我们知道第一遍选择第1个元素5会和2交换,那么原序...原创 2020-03-30 19:41:15 · 383 阅读 · 0 评论 -
老卫带你学---必须手撕的三种查找算法(干货!!!附python代码)
1.顺序查找顺序查找就是将数组中的元素与待查找值一一比较,然后直到找到为止。优点仅在于不需要额外的处理,缺点是查询速度太慢。def sequential_search(nums:list,val:int): for i in nums: if(i==val): return i2.二分查找对于已排好序的数组,我们可以采用二分查找法来进行查找...原创 2020-03-05 21:26:30 · 530 阅读 · 0 评论 -
老卫带你学---必须手撕的十大排序算法(干货!!!附python代码)
python代码:###插入排序def insert_sort(nums): for i in range(1,len(nums)): tempt=nums[i] j=i-1 while(j>=0 and nums[j]>tempt): nums[j+1]=nums[j] j-=...原创 2019-07-08 21:26:21 · 534 阅读 · 0 评论 -
老卫带你学---python中heapq源码剖析
这是一个相当实用的内置模块,但是很多人竟然不知道他的存在——笔者也是今天偶然看到的,哎……尽管如此,还是改变不了这个模块好用的事实heapq 模块实现了适用于Python列表的最小堆排序算法。堆是一个树状的数据结构,其中的子节点都与父母排序顺序关系。因为堆排序中的树是满二叉树,因此可以用列表来表示树的结构,使得元素 N 的子元素位于 2N + 1 和 2N + 2 的位置(对于从零开始的索引...原创 2019-07-31 21:45:51 · 435 阅读 · 1 评论 -
老卫带你学---必须手撕的DFS深度优先遍历与BFS广度优先遍历(干货!!!附python代码)
hello大家好,欢迎大家来到老卫带你学课堂。老卫带你学,天天有的学!!!今天来分享一下图论中最经典的两种遍历算法。深度优先遍历DFS,广度优先遍历BFS。讲述他们的原理,思想,与完美python代码。深度优先遍历DFS深度优先遍历:寻找初始点,并将该点压入一个栈Q中。(这里采用python的内置容器的list)pop弹出Q栈的末尾元素,判断该元素是否被访问过。(这里我们采用一个...原创 2019-08-26 15:14:25 · 980 阅读 · 0 评论