数据结构
纸翼青春
这个作者很懒,什么都没留下…
展开
-
算法的时间复杂度计算
一、时间复杂度我们想要知道一个算法的「时间复杂度」,很多人首先想到的的方法就是把这个算法程序运行一遍,那么它所消耗的时间就自然而然知道了。这种方式可以吗?当然可以,不过它也有很多弊端。这种方式非常容易受运行环境的影响,在性能高的机器上跑出来的结果与在性能低的机器上跑的结果相差会很大。而且对测试时使用的数据规模也有很大关系。再者,并我们在写算法的时候,还没有办法完整的去运行呢。因此,另...转载 2019-04-22 10:26:14 · 715 阅读 · 0 评论 -
二叉树的实现及操作(链表实现)C语言
概述 二叉树为每个节点最多有两个儿子节点(左儿子节点和右儿子节点)的树。 前序遍历:根结点 ---> 左子树 ---> 右子树。 中序遍历:左子树--->根结点---> 右子树。 后序遍历:左子树 ---> 右子树---> 根结点。 节点深度:节点ni的深度(depth)为从根到ni的唯一路径的长。根的深度为0。 ...原创 2019-09-09 08:55:37 · 2960 阅读 · 4 评论 -
单链表整表创建的两种方法(头插法和尾插法)
线性表可分为顺序存储结构和链式存储结构顺序存储结构的创建,其实就是一个数组的初始化,即声明一个类型和大小的数组并赋值的过程。而单链表和顺序存储结构就不一样,它的每个数据的存储位置不需要像数组那样集中,它可以很散,是一种动态结构。对于每个链表来说,它所占用的空间大小和位置并不需要预先分配划定,可以根据系统的情况和实际的需求即时生成。所以,创建单链表的过程就是一个动态生成链表的过程。即从“空表”的...转载 2019-07-31 16:50:01 · 1910 阅读 · 0 评论 -
八大排序
排序算法总结排序算法 平均时间复杂度 冒泡排序 O(n2) 选择排序 O(n2) 插入排序 O(n2) 希尔排序 O(n1.5) 快速排序 O(N*logN) 归并排序 O(N*logN) 堆排序 O(N*logN) 基数排序 O(d(n+r)) 三. 插入排序(Insertion Sort)...原创 2019-07-19 11:05:52 · 108 阅读 · 0 评论 -
寻找两个升序排列的中序数(3种方法)
问题描述一个长度为L(L>=1)的升序序列S,处在第[L/2]个位置的数称为S的中位数。例如,若序列S1=(11,13,15,17,19),则S1中的中位数是15.两个序列的中位数是含它们所有元素的升序序列的中位数。例如,若S2=(2,4,6,8,20),则S1和S2的中位数是11.现在两个等长升序序列A和B,试设计一个在时间和空间方面尽可能高效的算法,找出两个序列A和B的中位数。实...原创 2019-06-12 09:44:08 · 1779 阅读 · 0 评论 -
线性表习题(1)
1.已知一个带有表头结点的单链表,结点结构为(data,link),假设该链表只给出了头指针list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中的倒数第K个位置上的结点(k为正整数),若查找成功,算法输出该结点的data域的值,并返回1:否则,只返回0,要求:描述算法的基本设计思想; 描述算的的详细实现步骤; 根据设计思想和实现步骤,采用程序设计语言描述算法思路...原创 2019-06-10 11:05:45 · 632 阅读 · 0 评论 -
KMP快速计算next与nextval
最近在研究数据结构,碰到了计算next与nextval值,查看了大量资料,发现这个方法最是清楚明白,整理后贡献出来,有问题可以留言哟!方法1:引入了一个maxL,在计算nextval时,比较方便。强烈建议读者按照思路算一遍,再找几道题试试。方法1准备工作:写好模式串t,序号从1开始。maxL:首个为0,计算包含当前字符的串的最大相同前后缀中字符的个数。例如,对于序号3,aba,...原创 2019-06-10 09:54:41 · 9733 阅读 · 14 评论 -
前缀、中缀、后缀转换
表达式简介最近看书的时候接触到了后缀表达式,恰好看SICP中间也碰到了类似的问题,就花时间好好将这部分内容进行了整理。前缀表达式(Prefix Notation)是指将运算符写在前面操作数写在后面的不包含括号的表达式,而且为了纪念其发明者波兰数学家Jan Lukasiewicz所以前缀表达式也叫做“波兰表达式”。比如- 1 + 2 3.中缀表达式(Infix Notation)就是常用...原创 2019-05-20 09:08:57 · 209 阅读 · 0 评论 -
遍历二叉树(附源码)
前序遍历算法void PreOrderTraverse(BiTree T){ if(T==NULL) return; printf("%c",T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild);}原创 2019-04-15 09:57:38 · 226 阅读 · 0 评论 -
单链表创建、查找(C语言)
#include<stdio.h>#include<stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;//采用头插法建立单链表LinkList CreatList1(LinkList &L)...原创 2019-09-24 09:50:42 · 3823 阅读 · 0 评论