
数据结构的学习
数据结构的知识点
越过山丘,佳人等候
逃离平庸
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构学习——11—树的实现(二叉树,节点添加,先中后序遍历)
一、树 树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>=1)个有限节点组成一个具有层次关系的集合。 树具有以下特点: 每个节点有零个或多个子节点; 没有父节点的节点称为根节点; 每一个非根节点有且只有一个父节点; 除了根节点外,每个子节点可以分为多个不相交的子树; 树里面每个元素我们叫作“节点”;用来...原创 2019-11-24 21:34:22 · 556 阅读 · 0 评论 -
数据结构学习——10—查找算法(二分查找)
一、二分查找 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好; 其缺点是要求待查表为有序表,且插入删除困难。 因此,折半查找方法适用于不经常变动而查找频繁的有序列表。 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步...原创 2019-11-23 16:26:05 · 322 阅读 · 0 评论 -
数据结构学习——09—排序算法(快速排序、归并排序、常见排序算法比较)
一、快速排序(quick sort) 快速排序,又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 排序步骤为: 1、从数列中挑出一个元素,称为"基准"(pivot)(初始一般为第一...原创 2019-11-23 16:23:18 · 297 阅读 · 0 评论 -
数据结构学习——08—排序算法(插入排序、希尔排序、快速排序)
一、插入排序(insertion sort) 将数组中的数据分为两个区间,已排序区间和未排序区间。初始已排序区间只有一个元素,就是数组的第一个元素。插入算法的核心思想是取未排序区间中的元素,在已排序区间中找到合适的插入位置将其插入,并保证已排序区间数据一直有序。重复这个过程,直到未排序区间中元素为空,算法结束。(抓扑克牌形式) 插入排序包含元素的比较和元素的移动。将一个数据 a 插入到已排序区间...原创 2019-11-19 22:34:01 · 305 阅读 · 0 评论 -
数据结构学习——07—排序算法(递归、冒泡、选择排序)
分析排序算法的考虑因素: 1、排序算法的执行效率 时间复杂度 比较次数和交换(或移动)次数 2、排序算法的内存消耗 原地排序算法,就是特指空间复杂度是 O(1) 的排序算法 3、排序算法的稳定性 待排序的序列中存在值相等的元素,经过排序之后,相等元素之间原有的先后顺序不变。 一、递归 使用递归算法解决问题需要满足以下的条件 一个问题的解可以分解为几个子问题的解 这个问题分解之后的子问题,除了...原创 2019-11-18 15:50:03 · 433 阅读 · 0 评论 -
数据结构学习——06—栈和队列
一、 栈的操作特性:栈是一种“操作受限”的线性表,只允许在一端插入和删除数据 从功能上来说,链表确实可以替代栈,但是数组或链表暴露了太多的操作接口,操作上的确灵活自由,但使用时就比较不可控,更容易出错。 当某个数据集合只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性,我们就应该首选“栈”这种数据结构。 栈主要包含两个操作,入栈和出栈,也就是在栈顶插入一个数据和从栈顶删除一个数据。 栈既...原创 2019-11-17 21:14:59 · 314 阅读 · 0 评论 -
数据结构学习——05—双向链表
双向链表的知识点很多都和单向链表相同,函数实现方法也差不多,只是需要注意每个节点的prev需要指向上一个节点。 双向链表的节点实现: '''双向链表''' # 节点实现 class Node(object): def __init__(self, item): self.item = item # 前后指向地址暂定为None ...原创 2019-11-15 17:23:47 · 193 阅读 · 0 评论 -
数据结构学习——04—循环链表
循环链表与单向链表的区别就是尾结点的地址指向问题,尾结点需要指向首节点的数据,这里是实现的一个需要注意的地方,增删改查这些操作都要单独考虑尾结点的指向问题。 首先实现循环链表的单个节点: # 节点实现 class Node(object): # 单节点 def __init__(self, item): # 存放数据元素 self.item = i...原创 2019-11-13 14:56:02 · 375 阅读 · 0 评论 -
数据结构——03—单向链表
顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活。 链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。 链表的定义 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。 链表分为三类:单向链表,双向链表,...原创 2019-11-11 19:52:34 · 243 阅读 · 0 评论 -
数据结构学习——02—顺序表
Python代码执行步骤: 当我们写好python的代码的时候,此时需要使用CPython/GPython这样的解释器(不是IDE的编译器)进行解释成010101这样的二进制数据,再让CPU执行。 内存中一个int类型在32位的系统中占用4个字节, 内存中的单位是字节,1个字节占8位。 所以int=1的在内存中的表示方法是: 每多1个字节,地址+1 地址:0x01 00000000 ...转载 2019-11-08 17:40:35 · 351 阅读 · 0 评论 -
数据结构学习——01
程序=数据结构+算法 数据结构:数据的组织形式 算法:解决实际问题的方法 总结:算法是为了解决实际问题而设计的,数据结构是算法需要处理的问题载体。 算法的五大特性: 输入:算法具有0个或多个输入 输出:算法至少有1个或者多个输出 有穷性:算法不会无限循环,并且每一步可以在可接受的时间内完成 可行性:算法每一步都是可行的 确定性:算法每一步都有确定的含义,不会出现多种含义 算法的时间复杂度: 算法分...原创 2019-11-05 21:20:39 · 159 阅读 · 0 评论