数据结构与算法
weixin_41247813
这个作者很懒,什么都没留下…
展开
-
为啥编程语言中的数组都从0开始编号?
我们在学习任何一种语言的时候,都会遇到数组这种数据类型,但是你是否下意识的想过为啥数组的下标是从0开始编号,而不是从1开始编号?1.首先来对数组做一个定义:数组(Array)是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。1)名词解释---线性表:线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后俩个方向!线性表与非线性表做对比:...原创 2018-10-03 16:39:18 · 272 阅读 · 0 评论 -
如何实现LRU缓存淘汰算法
缓存是一种提高数据读取性能的技术,比如常见的cpu缓存以及浏览器缓存!但是缓存的大小有限,当缓存用满的时候,哪些数据应该被清理出去,哪些数据应该被保留?解决方案:FIFO--->先进先出 LFU---> 最少使用 LRU-->最近最少使用 比方:买来很多技术书太占用书房空间了,这时候会选择扔掉一些书籍,但是采取啥样的策率呢?一般就是上面三种策率!问题:...原创 2018-10-06 09:54:22 · 5125 阅读 · 5 评论 -
数组与链表之于cpu缓存
cpu的缓存机制:cpu从内存中读取数据的时候,会先把读取的数据加载到cpu的缓存中。而cpu每次从内存中读取数据并不是只读取那个特定要访问的地址,而是读取一个数据块(视情况而定一段连续的内存地址)并保存到cpu的缓存中,然后下次访问内存数据的时候就会先从cpu缓存开始查找,如果找到就不需要再从内存中取。这样就实现了比内存访问速度更快的机制,这同时也是cpu缓存存在的意义:为了弥补内存访问速度过慢...原创 2018-10-08 15:25:39 · 833 阅读 · 0 评论 -
时间复杂度
一般情况下,我们程序中的时间复杂度主要分为4种,分别是:1.最好情况时间复杂度:判断代码最快结束的情况2.最坏情况时间复杂度:判断代码最慢结素的情况3.平均情况时间复杂度:考虑每种可能情况执行的次数K以及对应的概率P之和(也就是我们经常说的期望)4.均摊时间复杂度:代码块的执行存在俩种截然相反的时间复杂度的情况,一般取出现频率最多的情况为时间复杂度!举例:在这段代码中...原创 2018-09-29 14:08:03 · 207 阅读 · 0 评论 -
栈
一.什么是栈?1.后进者先出,先进者后出,这就是典型的栈结构。2.从栈的操作特性上来讲,是一种操作受限的线性表,只允许在端插入或删除。类比:摆盘子,后放者在上面,先放者在下面。二.为啥需要栈1.栈是一种操作受限的数据结构,其操作特性用数组或者链表均可实现。2.任何数据结构都是对特定应用场景的抽象,数组和链表虽然使用起来比较灵活,但却暴露了所有的操作,难免比较危险。3...原创 2018-10-23 09:26:18 · 126 阅读 · 0 评论