数据结构和其他
呢喃无音
这个作者很懒,什么都没留下…
展开
-
希尔排序
希尔排序是利用了插入排序可以高速的整理较有序的序列的特点。在希尔排序中,会对数据进行n次插入排序,每次减少排序的步长。最后使的步长为1,进行一次全部元素的插入排序。#include<iostream>using namespace std;//希尔排序利用了插入排序对越有序的序列排序越快的特点。void Show(int* arr, int n){ for (int i...原创 2018-10-17 22:20:27 · 102 阅读 · 0 评论 -
数据结构(12)----图(遍历、最小生成树、easyX可视化)
从图的某一顶点出发访问遍图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫做图的遍历(Traversing Graph)。深度优先遍历(Depth_Frist_Search),也有称为深度优先搜索,简称为DFS。DFS:它从图中某个顶点V出发,访问此顶点,然后从V的未被访问的邻接点出发深度优先遍历图,直至图中所有和V有路径相通的顶点都被访问到。若图中尚有顶点未被访问,则另选图中一个未曾...原创 2019-01-28 23:15:21 · 3800 阅读 · 4 评论 -
数据结构9----栈和队列习题
1、设计一个包含min函数的栈,要求min,pop,push的时间复杂度都是o(1),两种解法。思路:设计两个栈主栈和min栈,主栈就是正常栈,负责pop()和push(),min栈,专门用来存储当前最小的元素,负责min函数。min栈的设计思路有两种,(1)min栈的大小和主栈的一样大,当有元素入栈时就和当前栈顶元素比较,如果当前入栈元素小于min栈的元素,直接入栈,否则,将min栈种的...原创 2019-01-23 13:27:59 · 231 阅读 · 0 评论 -
数据结构10----树(二叉树)
二叉树的定义:二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的,分别被称为根结点的左子树和右子树的二叉树组成。二叉树的特点:(1)每个结点最多有两棵子树,所以二叉树中不存在度大于2的结点。(2)左子树和右子树是由顺序的,次序不能任意颠倒。(3)即使树中某结点只有一棵子树,也要区分它是左子树...原创 2019-01-23 15:23:47 · 956 阅读 · 0 评论 -
排序算法汇总
稳定的排序算法:直接插入排序、冒泡排序、归并排序、基数排序。不稳定的排序算法:希尔排序、简单选择排序、快速排序、堆排序。为什么要分稳定排序和非稳定排序:答:当我们只需要数组有序时,稳定和非稳定排序是相同的。但当我们关注排序后的内容时,这两者机会显现出差异,稳定排序可以保证相同数的相对位置不变,而非稳定不能。稳定排序可以是排序的结果在“第二关键字”上有序。即如果对一个班...原创 2019-02-10 19:22:30 · 190 阅读 · 0 评论 -
数据结构(13)---图(最短路径----迪杰斯特拉算法)
最端路径:对于网图来说,最短路径,是指两个顶点之间经过的边上权值之和最少的路径,并且称路径上的第一个顶点时源点,最后一个顶点是终点。算法主要有两种:迪杰斯特拉算法,弗洛伊德算法。 使用以上网图,分别对迪杰斯特拉算法和弗洛伊德算法进行说明。迪杰斯特拉算法:迪杰斯特拉算法采用了贪心的策略,可以求出顶点到图中每个点的最短路径,时间复杂度为:n^2。申请shortesPath数组和...原创 2019-02-12 23:19:05 · 932 阅读 · 0 评论 -
正则表达式
正则表达式是含有一些具有特殊意义字符的字符串,这些特殊的字符称为正则表达式。常用正则表达参照表: 元字符 正则表达式的写法 意义 .(点) .(点) 代表任何一个字符 \d \\d 代表0到9的任何一个数字 ...原创 2019-02-18 21:55:44 · 213 阅读 · 0 评论 -
二叉查找树(BSTree)
难点:二叉查找树的删除二叉查找树概念:二叉查找树:要么为空树,若二叉查找树不为空,则需要满足以下性质:(1)左子树上所有的节点值均小于或等于其根结点的值。(2)右子树上所有的节点值均大于或等于其根结点的值。(3)左右子树也一定分别为二叉查找树。特点:(1)将数据分为左右子树两部分,加快了查找的速度。(2)中序遍历的结果为有序的。优点:(1)查找的时间复杂...原创 2019-07-02 23:06:36 · 1022 阅读 · 0 评论 -
平衡二叉树(AVL树)---四种插入方法
平衡二叉树又称为平衡二叉查找树(Self-Balancing Binary Search Tree),或称为AVL树。一、平衡二叉树的定义它是一棵空树或者任意的左右子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树,将这样的二叉树称为平衡二叉树。最小二叉平衡树节点总数:F(n)=F(n-1)+F(n-2)+1。(*其中:1为根结点,F(n-1)为左子树的节点数量,F(...原创 2019-07-08 23:31:48 · 3284 阅读 · 0 评论 -
数据结构8------树(1)
树:树(Tree)是n(n>=0)个节点的有限集。n=0时称为空树。在任意一棵飞空树中:(1)有且仅有一个特定的被称为“根”(Root)的结点。(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、T3、.......Tm,其中每一集合本身又是一棵树,并且称为根的子树(subTree)。根:A {B CD}T1{C F G}T2称为A的子...原创 2019-01-22 14:42:10 · 155 阅读 · 0 评论 -
数据结构(11)-----图(使用easyX将图还原)
图:图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。 (1)线性表中的数据元素叫元素,树中将数据元素叫结点,在图中数据元素称为顶点。 (2) 图不存在空图的概念,图中至少有一个顶点。(3)线性表中,相邻的数据元素之间具有线性关系,树结构中,相邻两层的结点具有层次关系,而图中...原创 2019-01-25 18:50:05 · 1268 阅读 · 0 评论 -
数据结构6---队列
队列(queue)使只允许在一段进行插入操作,而在另一端进行删除操作的线性表。队列使一种先进先出的线性表,简称FIFO(first in first out)。允许插入的一端称为队尾,允许删除的一端称为队头。顺序队列:把顺序表的一端当作队头,另一端当作队尾,但是由于队列和顺序表的一些特点导致这样设计出的队列结构,出队和入队的操作总有一个的时间复杂度为O(n)。那如何在保证队列的特性...原创 2019-01-20 19:51:47 · 421 阅读 · 0 评论 -
汉语字典
浏览器:火狐浏览器开发工具:pycharm这几天自学python爬虫,于是写了一个在线汉语字典。选择的爬取的网站为:百度汉语。(url简单)百度汉语:https://hanyu.baidu.com/1、寻找查询时url的变化规律。搜索成语:“坚壁清野”(这里不能直接复制,直接复制地址会自动转换成url格式,不利于发现鼓励) 搜索汉字:“爱” 搜索词语:“...原创 2018-08-03 18:03:45 · 1629 阅读 · 0 评论 -
qT入门系列1
在学习qT之前,大家一定要清楚,qT版本4和版本5不兼容。我学的是qT5,使用的工具为QT creator。写这个博客主要是为了整理学习时的一些知识。大家学习转到http://www.qter.org。1、创建窗口。#include<QApplication>#include<QLAbel>int main(int argc,char* argv[]){ ...原创 2018-10-28 16:32:23 · 141 阅读 · 0 评论 -
栈的应用--------表达式求值
任何一个表达式都可以看成是三部分组成,操作数、运算符和界限定符组成。我们平时的表达式都是:中缀表达式,——即运算符在两个操作数之间。然而这种算式放在计算机中是无法计算的,因为不同的运算符的优先级是不同的,如果按中缀表达式计算时,处理起来就会非常麻烦,所以当计算机运算时一般是将中缀表达式转为后缀表达式进行计算的。后缀表达式的好处在于不需要考虑各个符号的优先级。因为在后缀表达式中的符...原创 2018-11-05 17:53:57 · 582 阅读 · 0 评论 -
数据结构1-------数据结构中的概念
数据数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据元素数据元素是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。数据项数据项:一个数据可以由若干个数据组成,这些组成部分就是数据项,是数据不可分割的最小单位。数据对象:数据对象是性质相同的数据元素的集合,是数据的子集。数据结构数据...原创 2019-01-17 14:28:53 · 321 阅读 · 0 评论 -
数据结构2——动态线性表的顺序存储
线性表:零个或多个数据元素的有限序列线性表是一个序列,即元素之间是由顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素有且只有一个前驱和后继(不能跳着进行存储)。其次线性表的元素个数是有限的。线性表的顺序存储结构线性表的顺序存储结构,指的是用一段地址连续的存储单元依此存储线性表的数据元素。代码实现动态线性表的顺序存储环境:VS2013语言:c...原创 2019-01-17 15:04:19 · 255 阅读 · 0 评论 -
数据结构3-----线性表的链式存储结构(1)
在顺序结构中,每个元素只需要存储元素的信息就可以,单链式结构中因为每个节点的位置在物理上的位置是不确定的,所以在存储时,需要不仅需要存储数据信息还要存储后继元素的位置(单链表),有的链表不但会存储后继节点的位置,还会存储前驱节点的位置(双向链表)。一般将存储数据的部分称为数据域存放下一个节点位置的区域叫做指针域,而数据和指针域和起来称为一个节点。而链表包含零个(空链表)或多个节点由多个节点。由...原创 2019-01-19 16:06:39 · 143 阅读 · 0 评论 -
数据结构4-----线性表的链式存储结构(2)
单链表的题目:1、单链表的反转思路:借助三个指针p1,p2,p3。让p1=head;p2=p1->nect;p3=p2->next;之后将p2->next=p1;然后将p1,p2 ,p3顺序后移,一直到p3为空就会将链表反转。(特殊情况数组中只有没有或者只有一个节点时,直接返回就可以。)void linkListReverse(linkList* head){ ...原创 2019-01-19 21:56:18 · 165 阅读 · 0 评论 -
数据结构5-----栈
栈(stack)是限定仅在表尾进行插入和删除操作的线性表。允许插入和删除的一端称为栈顶(top),另一端称为栈底(botton),不含任何数据元素的栈称为空栈。栈又称为“后进先出”的线性表,简称LIFO结构。栈可以用顺序结构实现,也可以用链式结构实现。顺序栈/*顺序栈,使用顺序表实现栈结构,将顺序表的表尾当作栈的头和尾。可以使出栈和入栈的的时间复杂度都降为O(1)定义to...原创 2019-01-20 16:04:27 · 267 阅读 · 0 评论 -
RocketMQ原理
一、消息队列1、什么是消息队列消息队列是一种进程间或是统一进程的不同线程的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户。消息队列提供了异步的通信协议,每一个贮列的记录包含有详细的说明数据,包括发生的时间,输入设备的种类,以及特定的输入参数,也就是:消息的发送者和接收者不需要同时与消息队列交互。消息会保存在队列中,直到接收者取回它。 ---维基百科这时一个比较官方的定...原创 2019-08-11 13:35:09 · 792 阅读 · 0 评论