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