数据结构与算法
漫步者2011
欢迎来找茬!
展开
-
插入排序
一、基本思想 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入。 插入排序非常类似于整扑克牌。 在开始摸牌时,左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左地进行比较。无论什么时候,左手中的牌都是排好序的。 如果输入数组已经是排好序的话,插入排序出现转载 2016-05-13 18:00:25 · 336 阅读 · 0 评论 -
时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度合称为算法的复杂度。 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或转载 2016-05-13 18:47:21 · 214 阅读 · 0 评论 -
数据结构简介
程序设计 程序设计 = 数据结构 + 算法。 逻辑结构 集合结构:数据间没有对应关系; 线性结构:数据间一对一的关系; 树形结构:数据间一对多的关系; 图形结构:数据间多对多的关系; 物理结构 顺序结构:数据在存储空间连续存储; 链式结构:数据在存储空间不连续存储; 每一种具体数据存储可以是两种结构的组合,如数组为顺序线性存储;链表为链式顺序存储;原创 2016-08-10 16:12:42 · 435 阅读 · 0 评论 -
内核链表操作解析
linux内核之链表操作解析 本文只是对linux内核中的链表进行分析。内核版本是linux-2.6.32.63。文件在:linux内核/linux-2.6.32.63/include/linux/list.h。本文对list.h文件进行简要分析,有必要的地方还会以图进行说明。 代码分析 链表结构体: 有前驱和后继,说明是双链表 struct list_hea转载 2017-01-09 16:41:47 · 306 阅读 · 0 评论 -
链表
常用链表和内核链表的区别 常用链表结构 通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系。按照指针域的组织以及各个节点之间的联系形式,链表又可以分为单链表、双链表、循环链表等多种类型,下面分别给出这几类常见链表类型的示意图: 内核链表结构 链表数据结构的定义很简单(节选自[include/转载 2017-01-09 16:40:15 · 216 阅读 · 0 评论