
数据结构
绮罗_Ss
千里的路若我只能陪你风雪一程,牵你的手前尘过往我都不问
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
(二)如何进行复杂度分析
1.大O表示法 算法的执行时间与每行代码的执行次数成正比,即:T(n)=O(f(n))。其中T(n) 是算法的执行总时间,f(n)是每行代码的执行次数,n是数据的规模(不包含常量阶,低阶,以及系数)。 2.复杂度量级(按数量级递增) 常量阶O(1):只要代码的时间不随n的增大而增长,都记为O(1)。 对数阶O(logn):n作为结束值,代码数量固定成倍数增长。例:i=1; while (i...原创 2018-11-13 14:49:15 · 665 阅读 · 0 评论 -
(一)什么是数据结构和算法
1.什么是数据结构与算法? 数据结构:一组数据的存储结构。(线性表,散列表,图,树) 算法:操作数据的一组方法。(复杂度分析,基本算法思想,排序,搜索,查找,字符串匹配,其他) 2.为什么需要数据结构与算法? 数据量大的时候选用合适的数据结构与算法可以提高计算机计算效率。 3.怎样衡量数据结构与算法? 复杂度分析:空间复杂度,时间复杂度。 4.散列表(哈希表)(散列函数构造、处理冲...原创 2018-11-12 16:23:56 · 294 阅读 · 0 评论 -
(三)数组
1.数组如何实现随机访问? 连续的存储空间存储想他类型的数据。 数组在内存中的分配图,得出寻址公式。 例:a[k]_address = base_address + k * type_size,a[k][j]_address = base_address + (k*n+j) * type_size 下标k为偏移量,所以从0开始。 2.如何改善低效的插入和删除? 插入:若无序要求,插入新的...原创 2018-11-14 15:29:05 · 135 阅读 · 0 评论 -
(五)栈的应用
栈是一种操作受限的线性表,后进先出。用数组实现的叫顺序栈,用链表实现的叫链式栈。入栈、出栈的时间复杂度都为O(1)。 1.栈在函数调用中的应用 对每个线程会单独创建一个运行时栈。对每个函数呼叫会在栈内存生成一个栈帧(Stack Frame)。所有的局部变量将在栈内存中创建。栈区是线程安全的,因为它不是一个共享资源。栈帧被分为三个子实体: a 局部变量数组 – 包含多少个与方法相关的局部变量并...原创 2018-11-20 15:21:54 · 223 阅读 · 0 评论 -
(四)5个常见的链表操作
1.单链表翻转(新指针,两个交换位置,循环调用) ListNode* ReverseList(ListNode* pHead) { ListNode* newhead = NULL; for(ListNode* p = pHead; p; ) { ListNode* tmp = p -> next; p -> next = n...原创 2018-11-16 11:28:36 · 197 阅读 · 0 评论 -
(六)队列在线程池等有限资源中的应用
队列是一种先进先出的操作首先的线性表。分为顺序队列和链式队列,还有额外特性的队列,比如循环队列,阻塞队列,并发队列。入队时,tail->next= new_node, tail = tail->next;出队时,head =head->next。对满:tail=n,对空:head=tail。 1.循环队列 循环队列,首尾相连形成一个环。数组实现的循环队列,对满:(tail+1...原创 2018-11-21 18:46:51 · 198 阅读 · 0 评论