- 博客(24)
- 问答 (8)
- 收藏
- 关注
原创 数据结构学习——堆排序
若n个元素的序列{,......}满足;或;则称该序列为小根堆或大根堆。由以上可知堆实质是任一非叶子结点均小(大)于它的孩子结点的完全二叉树。堆排序:若在输出堆顶的最小值(最大值)后,使得剩余n-1个元素的序列重又建成一个堆,则得到n个元素的次小值(次大值),如此反复便能得到一个有序序列。如何在输出堆顶元素之后,调整剩余元素为一个新的堆:(以小根堆为例)1、输出堆顶元素之后,以堆中最后一个元素替代之2、然后将根结点值与左、右子树的根结点值进行比较,并与其中小者进行交换3、重复以上
2022-04-09 18:32:02
1053
原创 算法学习——贪心算法解区间调度(C语言版)
题目一:有n项工作,每项工作分别在si时间开始,在ti时间结束。对于每项工作可以选择参与与否,如果参与必须全程参与。此外参与工作的时间段不能重复(即使是开始的瞬间与结束的瞬间重叠也不允许)。问最多能参与多少项工作?输入:第一行输入n;第二行输入n个用空格隔开的整数,表示n个工作的开始时间;第三行输入n个用空格隔开的整数,表示n个工作的结束时间样例:51 2 4 6 83 5 7 9 10...
2022-03-20 23:11:16
1164
1
原创 算法学习——贪心算法解渡河问题(C语言版)
题目一:有A组人,每组有N人,想用一艘船渡河,该船一次只能载两个人。每个人划船的速度不同,当两个人一组时船的速度由最慢的人决定。求一种方法能让所有人过河并且船的往返时间最短。输入:第一行输入A;第二行输入N(不超过1000);第三行输入速度(不超过100);输出:往返时间样例:输入141 2 5 10输出17...
2022-03-20 19:59:33
1366
原创 数据结构学习——希尔排序
基本思想:直接插入排序的改进。先将整个待排记录序列分割成若干子序列,分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。步骤:定义增量序列Dk:Dm>Dm-1>...>D1=1 对每个Dk进行“Dk-间隔”的插入排序(k=M,M-1,...1)特点:1.一次移动,移动位置较大,跳跃式地接近排序后的最终位置2.最后一次只需要少量移动3.增量序列必须是递减的,最后一个必须是14.增量序列应该是互质的,无除1外的公因子5.
2022-03-17 22:23:51
807
原创 算法学习——贪心算法解硬币(C语言版)
题目一:有1元,5元,10元,50元,100元,500元的硬币各从c1,c5,c10,c50,c100,c500枚,现在要用这些硬币支付A元,最少需要多少枚硬币?输入:第一行有六个数字,分别代表从小到大6种面值的硬币的个数;第二行为A样例:输入3 2 1 3 0 2620输出6#include <stdio.h>int main(){ int number[6]; int A,sum=0; int coins[6]={1,5,10,50,100,500}
2022-03-16 22:04:33
2282
原创 学习人工智能导论(1)
要让AI拥有人类的智能,先要弄清智能是什么。以下是几种关于智能的观点:(1)思维理论该理论认为思维是智能核心,人的智能来自大脑的思维活动,知识也是思维的产物,通过对思维规律与方法的研究可以揭示智能的本质。(2)知识阈值理论该理论认为智能行为取决于知识的数量及一般化的程度,智能就是在巨大的搜索库中能找到一个满意解的能力。(3)进化理论该理论认为人的本质能力是在动态环境中的行走能力、对外界事物的感知能力、维持生命和繁衍的能力,以这些能力为基础有了智能的发展。所以智能可以说是某一复杂系
2022-03-11 22:05:53
1880
原创 数据结构学习——快速排序
基本思想:在待排元素中任取一个作为中心pivot,其余元素比它小的放前面,比它大的放后面,由此形成左右两个子表,再对各子表重新选择中心元素重复以上步骤,直到每个子表元素只剩一个int Partition(SqList &L,int low,inr high){ L.r[0]=L.r[low]; pivotkey=L.r[low].key; while(low<high){ while(low<high&&L.r[high..
2022-03-07 13:17:34
515
原创 数据结构学习——散列表
基本概念散列存储: 元素的存储位置与关键字之间存在对应关系,这个对应关系由一个hash函数决定特点:查找效率高缺点:空间效率低散列方法(杂凑法):选取某个函数,依据该函数按关键字计算某元素的存储位置以存放;查找时由同一个函数对给定制值计算地址,将给定值与地址单元中元素关键码进行对比,确定查找是否成功。散列函数(杂凑函数):散列方法中使用的转换函数散列表:依据以上思想构造的表冲突:不同的关键码映射到同一个散列地址同义词:具有相同函数值的多个关键字一、散列..
2022-03-05 23:03:52
816
原创 数据结构学习——顺序表
顺序表的顺序存储表示#define LIST_INIT_SIZE 100typedef struct{ ElemType elem[LIST_INIT_SIZE]; int length;}SqList;顺序表 的初始化Status InitList_Sq(SqList &L){ L.elem=new ElemType[MAXSIZE]; if(!L.elem) exit(OVERFLOW); L.length=0;
2022-03-05 17:01:03
78
原创 数据结构——图的最短路径
用有向网来表示交通网络,其中顶点表示地点,弧表示两个地点有路连通,弧上的权值表示两地点之间的距离或交通费或途中所花费的时间等等,最短路径就是寻找各边权值之和最小的路径。最短路径与最小生成树不同,路径上不一定包含n个顶点,也不一定包含n-1条边。第一类问题:两点间最短路径迪杰斯特拉算法(时间复杂度O()):1、初始化:先找出从源点到各终点的直达路径(,),即通过一条弧到达的路径,若需通过两条或以上的弧则将距离记为无穷远,将全部顶点分为两个集合:S(以求出的最短路径的顶点的集合)和T(尚未确定最
2022-03-02 22:24:36
955
原创 数据结构学习——图的拓扑排序
基本概念有向无环图(DAG):图中某一顶点可能有多个前驱但不存在回路AOV网:用顶点表示活动,用弧表示活动之间的制约关系(用以解决拓扑排序)拓扑排序:在AOV网中没有回路的前提下,将全部活动排成一个线性序列,若AOV网中有弧<i,j>存在,则在序列里i一定在j前面,具有这种性质的线性序列叫拓扑有序序列,相应的拓扑有序排序的算法称为拓扑排序一、拓扑排序的方法1、在有向图中选一个没有前驱的顶点输出2、删除图中该顶点和所有以它为尾的弧3、重复以上两步,直至输出全部顶点或
2022-03-02 16:42:01
1799
原创 数据结构学习——简单选择排序
简单选择排序基本思想:在待排序的数据中选出最大(小)的元素放在其最终的位置基本操作:1、通过n-1次关键字比较,从n个元素中找出关键字最小的元素,将其与第一个元素交换2、再通过n-2次比较,从剩余n-1个元素中找出关键字次小的元素,将其与第二个元素交换3、重复以上操作,共进行n-1趟排序后,排序结束void SelectSort(SqList &K){ for(i=1;i<L.length;i++){ k=i; for(j=i
2022-03-01 21:33:53
189
原创 数据结构——冒泡排序
冒泡排序基本思想:每趟将记录两两比较,并按前小后大规则交换对n个元素,需要n-1趟排序,第i趟需要比较n-i次冒泡排序是稳定的排序。当某一趟比较没有出现交换时,说明已经排好序了就可以结束本算法,由此可以提高效率。时间复杂度:平均时间复杂度:O()最好情况(正序):比较次数:n-1 移动次数:0最坏情况(逆序):比较次数:(-n) 移动次数:(-n)void bubble_sort(SqList &L){ ...
2022-03-01 19:06:37
76
原创 数据结构学习——树与二叉树的转换
由于树和二叉树都可以用二叉链表作存储结构,则以二叉链表作媒介可以导出树与二叉树之间的一个对应关系。一、将树转换成二叉树(1)加线:在兄弟之间加一连线(2)抹线:对每个结点,除了左孩子之外,去除其与其余孩子之间的关系二、将二叉树转换成树(1)加线:若p结点是双亲结点的左孩子,则将则将p的右孩子,右孩子的右孩子......沿分支找到的所有右孩子都与p的双亲用线连接起来。(2)抹线:抹掉原二叉树中双亲与右孩子之间的连线三、森林转换成二叉树(1)将各棵树分别转..
2022-02-28 23:00:38
4745
原创 数据结构学习——树
树的基本术语结点的度:结点拥有的子树数树的度:度最大的结点的度结点的祖先:从根到该结点所经分支上的所有结点结点的子孙:以某结点为根的子树中的任意结点有序树:树中结点的各子树从左至右有次序无序树:树中结点的各子树无次序一、二叉树结构最简单,规律性最强。所有树都能转换为唯一对应的二叉树,不失一般性。特点:子树有左右之分,其次序不能颠倒,即使只有一棵子树也要说明它是左子树还是右子树,二叉树不是树的特殊情况,这是二叉树与树最主要的差别。性质1:在二叉树的第i层上最
2022-02-28 14:17:59
317
原创 数据结构学习——广义表
广义表的基本定义广义表是线性表的推广,是n个元素的有限序列,其中的元素或者是原子或者是广义表。广义表与线性表不同的点在于线性表的元素类型是单一的,而广义表可以包含多种元素类型。广义表通常记作 LS=(a1,a2,...,an)表头:若LS非空(n1),则其第一个元素(可以是原子也可以是子表)就是表头。表尾:除表头外的其他元素组成的表。(表尾不是最后一个元素,而是一个子表)一、广义表的性质(1)广义表的长度定义为最外层所包含元素的个数。(2)广义表的深度定义为该广义表展开后
2022-02-27 23:22:47
1248
原创 数据结构学习——数组
数组一维数组:线性结构,定长的线性表。线性表中的元素为非结构的简单元素。声明格式:数据类型 变量名称[长度]二维数组:一维数组中的元素又是一维数组结构声明格式:数据类型 变量名称[行数][列数]例:typedef elemtype array2[m][n];等价于 typedef elemtype array1[n];ccfdddd typedef elemtype array2[m]; 这里的array1是数据类型以此...
2022-02-27 22:18:10
262
原创 数据结构学习——串
一、串的基本定义串是内容受限的线性表(数据元素只能是字符),是由零个或多个任意字符组成的有限子串:一个串中任意个连续字符组成的子序列(含空串),另外真子串是指不包含自身的所有子串主串:包含子串的串字符位置:字符在序列中的序号子串位置:子串第一个字符在主串中的位置空格串:由一个或多个空格组成的串串相等:两个串长度相等并且各个对应位置的字符都相同二、串的存储结构串中元素的逻辑关系与线性表的相同,因此可以采用与线性表相同的存储结构,顺序存储结构的叫顺序串,链式存储结构的叫链..
2022-02-27 16:29:12
2371
原创 数据结构学习——查找(4)
分块查找:1、将表分成几块,且表或者分块间有序(如i<j,则第j块内所有元素的关键字均大于第i块的最大关键字)或者分块内有序2、建立索引表(每个结点含最大关键字和指向本块第一个结点的指针,且每个结点有序)3、查找过程:先确定索引表里给定值所在的块,再在块内查找。...
2022-02-26 22:44:29
52
原创 数据结构学习——查找(3)
折半查找:每次将待查元素所在范围减少一半。折半查找就是设定两个端点low和high,比较两端点中间元素mid关键字与给定值key的大小从而来取舍区间。mid=(low+high)/2 (不能整除的情况向下取整)若key<mid,则high=mid-1,舍弃mid右边区间若key>mid,则low=mid+1,舍弃mid左边区间当key==mid时,找到当high<mid,结束//非递归int Search_Bin(SSTable ST,KeyType ke
2022-02-26 22:22:09
253
5
原创 数据结构学习——查找(2)
顺序查找:(1)应用范围:顺序表或线性链表表示的静态查找表,表内元素是无序的。(2)数据元素的定义:一个元素下有多个数据项,但其中必有一个用于查找的关键字域。以成绩单为例,会有姓名成绩和学号等。typedef struct { KeyType key; //关键字 ...... //其他信息}ElemType;(3)表的定义:将所有元素以数组的形式集合就成了一个顺序表。typedef struct{ //顺序表结构类
2022-02-26 17:38:59
208
原创 数据结构学习——查找(1)
查找的基本概念查找表:由相同类型的数据元素组成的集合,元素之间的关系并不紧密,因此结构灵活,它可以具体表现为线性表、散列表等等。关键字:用来标识一个数据元素中某个数据项的值,有主关键字(根据它只能确定一个元素如学号)和次关键字(根据它可以确定多个元素如姓名)。查找就是根据给定的值在查找表中找到关键字等于给定值的数据元素。查找成功有两个操作:给出整个数据元素的信息或给出数据元素的位置。查找不成功则给出“空”或”空指针“。通常对查找表进行的操作:1、查询:看某个元素是否在表中2、
2022-02-26 12:02:11
162
原创 自学python小练习(1)自制函数实现打印1000以下斐波那契数列
list=[]def fbi(): a,b=1,1 while b<1000: a,b=b,a+b list.append(a)fbi()print(list)
2021-09-30 21:52:21
1141
空空如也
二叉树的根节点无法置空
2021-12-23
删除二叉排序树的一个节点
2021-12-20
为什么无论输入什么数,打出来的哈夫曼数都是一样的,而且编码打不出来
2021-11-27
无法打印结构体数组里的数据
2021-11-27
创建动态数组后,另一个数组的最后一个元素值被改变
2021-11-27
用c语言实现哈夫曼树
2021-11-26
点击运行后没有打印结果??
2021-11-06
Python注释删除代码依然报错
2021-10-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人