数据结构与算法
Econe-wei
共同见证知识的增长
展开
-
第4讲 | 数据结构与算法 | 【散列表】
- 《数据结构与算法》专栏完整版在公众号【书伟认视界】中查看,转载需联系微信【econe0219】散列表散列表(Hash Table),也可直译为哈希表。散列表是基于数组扩展得到的一种新的数据结构,因此有延续了数组最重要的一条性质:支持按下标随机访问,时间复杂度是O(1)。通过散列函数把元素的键值映射为下标,然后将数据存储在数组中对应下标的位置。我们熟悉的python的字典就是由散列表实现的。散列函数:直观定义为hash(key),key表示元素的键值,hash(key)指的就是经过散列函数得到原创 2020-08-23 13:41:10 · 248 阅读 · 0 评论 -
第5讲 | 数据结构与算法 | 【堆】
- 《数据结构与算法》专栏完整版在公众号【书伟认视界】中查看,转载需联系微信【econe0219】堆(Heap)堆实际就是树的一种,关于树这种数据结构后续文章会详细讲。不过堆也很好理解,所以直接拿出来说下,而且下篇文章要用到堆这个数据结构。堆这种特殊的树满足两个条件:堆是一个完全二叉树;堆中每一个节点的值都必须大于等于(或小于等于)其子树每个节点的值。完全二叉树就是除了最后一层,所有层都是满节点,而且最后一层的节点都是左排列(要么左右子节点都有,要么只有左子节点)。堆的节点大于等于其左右子原创 2020-08-23 13:40:19 · 214 阅读 · 0 评论 -
第3讲 | 数据结构与算法 | 【栈、队列】
- 《数据结构与算法》专栏完整版在公众号【书伟认视界】中查看,转载需联系微信【econe0219】栈栈的特点是,先进后出,后进先出。只允许在一端插入和删除数据。(想象往一个桶里放东西的过程)如浏览器页面的前进后退、函数调用都是用栈来实现的。注:我们常说的数据结构里“堆栈”其实就是“栈”,和“堆”是完全不同的概念。'''用 python 的列表来实现一个栈'''class Stack(object): # 空列表作为初始化的栈 def __init__(self):原创 2020-08-20 13:03:27 · 172 阅读 · 0 评论 -
第1讲 | 数据结构与算法 | 【复杂度分析】
- 《数据结构与算法》专栏完整版在公众号【书伟认视界】中查看,转载需联系微信【econe0219】复杂度分析数据结构与算法本身解决的问题就是,如果让代码运行更快,更省存储空间。时间、空间的复杂度分析就是来解决算法的执行效率的问题。所谓的时间、空间复杂度分析,就是在不用具体的数据来测试的情况下,就可以粗略估计算法的执行效率。大O复杂度表示法公式:T(n)=O(f(n))T(n) = O(f(n))T(n)=O(f(n))其中,T(n)T(n)T(n): 代码执行的时间;nnn: 数据规模的大小;原创 2020-08-20 12:39:32 · 239 阅读 · 0 评论 -
第2讲 | 数据结构与算法 | 【数组和链表】
- 《数据结构与算法》专栏完整版在公众号【书伟认视界】中查看,转载需联系微信【econe0219】数组和链表数组:一种线性表(具有前后顺序)数据结构。用一组连续的内存空间,来存储一组具有相同类型的数据。链表:通过指针将零散的内存快串联在一起。单向链表:插入、删除操作时,数组的时间复杂度是O(n),而链表不需要保证数据的连贯性,时间复杂度是O(1),但是访问元素时,需要根据指针一个结点一个结点地遍历,直到找到相应元素的节点,所以需要O(n)的时间复杂度。循环链表:循环链表的优点是,从链尾到原创 2020-08-19 20:24:48 · 186 阅读 · 0 评论 -
我打算当一个码农,但不学数据结构与算法行不行?
最近准备先着手写一个【数据结构与算法】的专栏!!!完事开头难,过程难上加难。今天就把开头难这个事情解决掉!!!我是渣渣,渣渣是我,因渣而骄傲!作为一个本科非CS出生的我,不知不觉在敲代码的路上渐行渐远~ ~ ~ ~ ~ ~对一般的工科生来讲,大一的时候都会上C语言的课,先学写代码,之后才学数据结构与算法。然鹅,在我的记忆中我开始认真接触代码这个东西还是大二时为了考NCRE才学的。大一的我几乎不上课,考试都是 C 的,真怀念那段荒废时光的日子,让我变得一无所知,真TM开心。于是大二为了考证而自学,“刻原创 2020-07-04 21:59:56 · 2874 阅读 · 0 评论