串的定义
定义:由零个或多个字符组成的有限序列。
记为:S = '' ()
定义:由零个或多个字符组成的有限序列。
记为:S = 'a1a2...an' (n≥1)
悄悄告诉你
括号里的话才是我想说的
我们对于数据结构的认识就是复杂,难,不好思考。但是日常生活中却遍布着数据结构的思想。(只是需要一双善于观察的眼睛👀)
我们在排队等待“叫号”时,不就是一个队列➡️吗?
我们存在不同人的QQ列表里,不就是一个图👤吗?
我们打牌时情不自禁地将牌从小到大的排序,不就是选择排序吗?
........
定义:图G由顶点集V和边集E组成,记为 G = (V, E) ,其中 V(G) 表示图G中顶点的有限非空集; E(G) 表示图G种边的集合。若V={v1,v2,...}则|V|表示G中顶点的个数,E={(u, w)|u∈V,v∈V},则|E|代表G中边的条数。
线性表是具有相同数据类型的n(n >= 0)个数据元素的有限序列,其中n为表长,当n = 0时线性表是一个空表。若使用L命名线性表,则表示为:
L = (a1, a2, ..., an)
重要的是有限个且类型相同。我们可以知道线性表有以下的特性:
默认以下的排序代码中元素都是整数数值且目的是进行升序排序。
排序:重新排列表中的元素,使表中的元素满足按关键字有序的过程。
也就是说对应表中输入 n 个不管是否有序的记录(每个记录表示用于排序的标志称为关键字),在输出时表中为 n 个有序的记录。
在讨论排序算法时,有一个很重要的性质:该算法是否稳定!
那么满足什么条件才能说改算法是稳定的呢?
若待排序表中有两个元素 Ri 和 Rj,其对应的关键字相同,且 Ri 排在 Rj 的前面,若在使用了某个排序算法后,Ri 仍然排在 Rj 的前面,那么就称该排序算法是稳定的,否则不稳定。
定义:只允许在一端进行插入或删除操作的线性表。
我们要明白栈也是一种线性表,但是一端被限制了操作,其具有先进后出的特性。
我们说这是一个优秀的算法,那是一个糟糕的算法,不是看是谁写的,也不是看是谁先提出来的,而是根据该算法的时间复杂度和空间复杂度来决定的。
那怎样进行判断呢?
我们就不搞数学那一套了,直接使用更为简单易懂的形式进行理解。
第一眼看到这个名词的时候还以为是让一段程序在电脑上运行一下同时统计运行使用的时间嘞,但回头一想,这样好像不太科学吧!
是的,如果只是简单的采用在电脑上运行的时间作为评判,那就滑天下之大稽了。思考一下,你的20000元的电脑和我的3000元的电脑玩原神的流畅度,肯定是不能比的。在这里也是同理,不同的电脑对于同一段程序跑出来的时耗也是不同的,甚至是天差地别!
定义:是n(n≥0)个节点的有限集。当n = 0时,称为空树。在任意一颗非空树中应满足:
- 有且仅有一个特定的称为根的结点。
- 当n > 1时,其余节点可分为m(m > 0)个互不相交的树,并称其为子树。