闲聊
儿童节快乐啊,虽然不是我们的节日,对于现在的我来说就是啊一个月又过去了,这一个月的计划又没有完成,没关系,6月继续努力!!
数据结构回顾
小知识点
- 邻接矩阵适用于稠密图的存储,而邻接链表适用于稀疏图的存储
- 一种抽象数据类型应该包含数据和操作两部分。(数据描述和操作声明)
- 在一棵二叉树的链式存储中,每个存储结点至少要包含2个指针域。[lchild data rchild]
- 通常情况下,查找数据相对较快的是哈希查找方法。
- 一个算法应该具有5个特性:可行性、有穷性、确定性、输入和输出。
- 数据结构的存储结构一般又:顺序存储、链式存储、索引存储和哈希存储四类。
- 数据结构涉及数据的逻辑结构、存储结构以及对数据的运算这三个方面的内容。
- 队列的特点是:先进先出,栈的特点是先进后出。
- 抽象类型树的存储结构有:双亲表示法、孩子表示法与孩子兄弟表示法等多种方法。
- 直接插入排序算法在平均情况下的时间复杂度为:$O(n^2)$,在最坏情况下的时间复杂度为$O(n^2)$。
- 快速排序算法在平均情况下的时间复杂度为:$O(nlog_2n)$,在最坏情况下的时间复杂度为:$O(n^2)$。(待排序列越接近无序,该算法效率越高)
快些选一堆,快速排序、希尔排序、简单选择排序,堆排序都是不稳定的,其他都是稳定的。 平均情况下:快速排序、希尔排序(复杂度了解即可)、归并排序和堆排序的时间复杂度均为$O(nlog_2n)$,(快些归队),其他都是$O(n^2)$。特殊的,基数排序:$O(d(n+r_d))$。最坏情况下:快速排序的时间复杂度为$O(n^2)$,其他和平均情况相同。
- 最小生成树算法
- 普里姆算法(Prim):局部到整体思想,选点再选边。适合点比较少,边比较多的图。
- 克鲁斯卡尔(Kruskal):先把所有顶点包含尽力啊,再来考虑最小权值(找到一条边,要验证是否构成了一个环,如果构成了一个环,则退回上一步,找比当前权值大一点的那条边。适合点多的图。
- 哈夫曼树解题一般方法:
- 将给出序列排序
- 选择出两个最小的数
- 将选出的2个数从数列中去除并且将两个数的和放入数列中
- 重复第一步
- 根结点不用编码,一般情况下,左分支编码为0,右分支编码为1。
- 用链接方式存储的队列,在进行删除运算时:头尾指针都可能要修改。(一般情况下,删除操作只需要移动头指针,但是当最后一个元素被删除时,要修改队尾指针,使其指向头指针。
- 散列表存储中冲突处理步骤时:往后移直到合理!
- 循环队列也存在空间溢出问题。(之前说因为顺序对存在假溢出问题所以使用循环队列,但是这里假溢出是指下标溢出,但是循环队列中依旧会存在空间溢出的问题)
- 二叉树结构是度不大于2的树结构
- 拓扑排序算法常用来判定一个有向图是否有环,所以有向有环图或者有向无环图都适用。
- 对于给定的n个元素,可以构造出的逻辑结构有:集合、线性结构、树形结构、图状结构或网状结构四种。
- 根据数据结构中元素之间相互关系的不同特性,通常有四类基本结构:集合结构、线性结构、树形结构、图状结构。
- 根据n个元素建立一个有序单链表的时间复杂度为:$O(n^2)$。
- 队列的插入操作在队尾进行。
- 若一个有向图有n个顶点和e条边,若采用邻接链表作为其存储结构,则该图的空间复杂度为:$O(n+e)$。
- 分支结点就是度不为0的结点
- 线性表只要以关键字有序方式存储就能进行折半查找。
- 对于具有e条边的无向图,他的邻接链表中共有2e个边结点。(对于任意一条边,在用邻接表表示时都需要表示2次,每次都涉及2个结点。
冒泡排序:
void bubble_sort(int a[], int n)
{
int i, j, temp;
for (i=n-1; i>0; i--)
{
for (j=0; j<i; j++)
{
if (a[j] > a[j+1])
{
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
}
直接插入排序
void straight_insert_sort(int a[], int n)
{
int i, j, temp;
for(i = 1; i < n; i++)
{
temp = a[i];
for(j = i - 1; a[i] < a[j]; j--)
{
a[j+1] = a[j];
}
a[j+1] = temp;
}
}
恋词U29、U30
- territory n.领土;领地;领域;范围;版图;地域
- fearsome adj.可怕的
- commemorate v.纪念;庆祝
- drain n.排水沟;下水道;慢慢流出;消耗 v.流干;喝光;慢慢排去
- ditch n.沟;水道;渠道 v.开沟;修渠
- slack adj.懈怠的;松弛的;萧条的
- scarce adj.缺乏的;不足的;稀有的;罕见的
- unilateral adj.(行动或决定)一方的;单边的
- intrude v.侵入;闯入;打扰;侵扰
- monotonous adj.(声音)单调的;毫无变化的
- spontaneous adj.自发的;自然的;非由外力诱发的
- dullness n.单调
- moan n.呻吟声 v.呻吟
- mock v.嘲笑;讥笑;蔑视 adj.仿制的
- groan v.呻吟;抱怨 n.呻吟声;叹息
- sarcastic adj.讽刺的;挖苦的;尖刻的
- plague n.瘟疫;祸患;灾难;麻烦事;讨厌的人 v.不断困扰;使烦恼
- lag v.落后于;滞后于; n.落后;滞后
- deficiency n.缺乏;不足;缺陷;缺点
- lump n.块;肿块;瘤
- shrug v.n 耸肩
- shrug off 不把..当回事
- shove v.乱放;乱塞;用力推
- brainstorm v.集思广益;头脑风暴;集体献计
- puffed adj.气喘吁吁的;呼吸急促的
- moisture n.潮湿;湿气;湿度;水分
- census n.人口普查;人口调查
- cunning adj.狡猾的;狡诈的;巧妙的 n.狡猾;诡诈
- dust n.灰尘;粉尘 v.掸去
- leave sb in the dust 把某人远远抛在后面;使某人望尘莫及
- dilute v.稀释;冲淡 adj.稀释的;冲淡的
- fabulous adj.极好的;绝妙的;特别的;非凡的
- bind v.捆绑;困扎;束缚
- agitate v.鼓动;煽动;使焦虑
- lumber n.木材;树木;大木料
- tactic n.策略;战略
- deceit n.欺骗;欺骗行为
- tricky adj.难办的;难对付的;狡猾的,诡计多端的
- fraud n.欺诈;骗子;冒名顶替者