数据结构与算法
了解数据结构与算法之美
jiao_yk
这个作者很懒,什么都没留下…
展开
-
关于链表(上)
常见的三种缓存淘汰策略:先进先出策略FIFO,最少使用策略LFU,最近最少使用策略LRU。1. 数组与链表的区别先从底层的存储结构来看数组需要的是一组连续的内存空间开存储,而链表不需要,链表通过指针将一组零散的内存空间串联起来使用。数组使用的是连续的内存空间,所以可以借用CPU的缓存机制,预读数组中的数据,访问效率更高,而链表在内存中不是连续存储,所以对CPU的缓存机制不是很友好。数组...原创 2020-04-04 17:59:24 · 152 阅读 · 0 评论 -
关于数组
1. 数组基础数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。第一是线性表:线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链接、队列、栈也是线性表结构。而与线性表对立的是非线性表结构,比如二叉树、堆、图等。在非线性表中,数据之间并不是简单的前后关系。第二是连续的内存空间和相同类型的数据,因此数组具有“随机访问”的...原创 2020-04-03 00:18:58 · 234 阅读 · 0 评论 -
复杂度分析(下)
1. 最好、最坏情况时间复杂度举个栗子// n 表示数组 array 的长度 int find(int[] array, int n, int x) { int i = 0; int pos = -1; for (; i < n; ++i) { if (array[i] == x) pos = i; } return pos; }...原创 2020-03-24 15:57:24 · 149 阅读 · 0 评论 -
复杂度分析(上)
1. 大O复杂度表示法先上代码举个例子 int cal(int n) { int sum = 0; int i = 1; for (; i <= n; ++i) { sum = sum + i; } return sum; }分析:我们假设每行代码执行的时间都一样,为unit_time,在这个假设的基础上,这段...原创 2020-03-24 15:09:47 · 251 阅读 · 0 评论