自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 归并排序

归并:将两个或两个以上的有序序列合并成一个有序序列的过程。归并排序的主要操作是归并,其主要思想是:将若干有序序列逐步归并,最终得到一个有序序列。关键问题⑴:如何将两个有序序列合成一个有序序列?void Merge (int r[ ], int r1[ ], int s, int m, int t ){ i=s; j=m+1; k=s; while (i<=m ...

2019-12-29 13:11:45 102

原创 选择排序

选择排序的主要操作是选择,其主要思想是:每趟排序在当前待排序序列中选出关键码最小的记录,添加到有序序列中。简单选择排序基本思想:第i 趟在n-i+1(i=1,2,…,n-1)个记录中选取关键码最小的记录作为有序序列中的第i个记录。关键问题⑴:如何在无序区中选出关键码最小的记录?解决方法:设置一个整型变量index,用于记录在一趟比较的过程中关键码最小的记录位置。关键问题⑵:如何确定最小...

2019-12-29 13:08:03 94

原创 交换排序之快速排序

基本思想首先选一个轴值(即比较的基准),通过一趟排序将待排序记录分割成独立的两部分,前一部分记录的关键码均小于或等于轴值,后一部分记录的关键码均大于或等于轴值,然后分别对这两部分重复上述方法,直到整个序列有序。一选择轴值的方法:1.使用第一个记录的关键码;2.选取序列中间记录的关键码;3.比较序列中第一个记录、最后一个记录和中间记录的关键码,取关键码居中的作为轴值并调换到第一个记...

2019-12-29 12:59:16 124

原创 交换排序

起泡排序基本思想:两两比较相邻记录的关键码,如果反序则交换,直到没有反序的记录为止。关键问题⑴:如何记载一趟排序过程中交换的多个记录?解决方法:设变量exchange记载记录交换的位置,则一趟排序后,exchange记载的一定是这一趟排序中记录的最后一次交换的位置,且从此位置以后的所有记录均已经有序。算法描述:if (r[j]>r[j+1]){r[j]←→r[j+1];exc...

2019-12-29 12:56:17 96

原创 插入类排序

插入排序的主要操作是插入,其基本思想是:每次将一个待排序的记录按其关键码的大小插入到一个已经排好序的有序序列中,直到全部记录排好序为止。插入类排序方法有以下两种:直接插入排序void insertSort (int r[ ], int n){for (i=2; i<=n; i++) {r[0]=r[i]; j=i-1;while (r[0]<r[j]) ...

2019-12-29 12:52:58 205

原创 排序的基本概念

排序:给定一组记录的集合{r1, r2, ……, rn},其相应的关键码分别为{k1, k2, ……, kn},排序是将这些记录排列成顺序为{rs1, rs2, ……, rsn}的一个序列,使得相应的关键码满足ks1≤ks2≤……≤ksn(称为升序)或ks1≥ks2≥……≥ksn(称为降序)。正序:待排序序列中的记录已按关键码排好序。逆序(反序):待排序序列中记录的排列顺序与排好序的顺序正好相...

2019-12-29 12:48:45 511

原创 散列表的查找技术

散列函数的构造直接定址法除留余数法数字分析法平方取中法折叠法(分段叠加法)冲突处理方法开放定址法链地址法建立公共溢出区散列表:采用散列技术将记录存储在一块连续的存储空间中,这块连续的存储空间称为散列表。散列函数:将关键码映射为散列表中适当存储位置的函数。散列地址:由散列函数所得的存储位置址 。散列技术的关键问题:⑴ 散列函数的设计。如何设计一个简单、均匀、存储利用率高的...

2019-12-29 12:35:01 350

原创 平衡二叉树

平衡二叉树:或者是一棵空的二叉排序树,或者是具有下列性质的二叉排序树:⑴ 根结点的左子树和右子树的深度最多相差1;⑵ 根结点的左子树和右子树也都是平衡二叉树。平衡因子:结点的平衡因子是该结点的左子树的深度与右子树的深度之差。最小不平衡子树:在平衡二叉树的构造过程中,以距离插入结点最近的、且平衡因子的绝对值大于1的结点为根的子树。基本思想:在构造二叉排序树的过程中,每插入一个结点时,首先...

2019-12-29 12:25:33 488

原创 树表的查找技术

二叉排序树(也称二叉查找树):或者是一棵空的二叉树,或者是具有下列性质的二叉树:⑴若它的左子树不空,则左子树上所有结点的值均小于根结点的值;⑵若它的右子树不空,则右子树上所有结点的值均大于根结点的值;⑶ 它的左右子树也都是二叉排序树。插入若二叉排序树为空树,则新插入的结点为新的根结点;否则,如果插入的值比根节点值大,则在右子树中进行插入;否则,在左子树中进行插入。递归。删除在二叉...

2019-12-29 12:18:12 133

原创 顺序查找

基本思想:从线性表的一端向另一端逐个将关键码与给定值进行比较,若相等,则查找成功,给出该记录在表中的位置;若整个表检测完仍未找到与给定值相等的关键码,则查找失败,给出失败信息。改进的顺序查找基本思想:设置“哨兵”。哨兵就是待查值,将哨兵放在查找方向的尽头处,免去了在查找过程中每一次比较后都要判断查找位置是否越界,从而提高查找速度。顺序查找的优点:算法简单而且使用面广。对表中记...

2019-12-29 12:08:49 169

原创 查找的基本概念

列表:由同一类型的数据元素组成的集合。关键码:数据元素中的某个数据项,可以标识列表中的一个或一组数据元素。键值:关键码的值。主关键码:可以唯一地标识一个记录的关键码。次关键码:不能唯一地标识一个记录的关键码。查找 :在具有相同类型的记录构成的集合中找出满足给定条件的记录。查找的结果 :若在查找集合中找到了与给定值相匹配的记录,则称查找成功;否则,称查找失败。静态查找 :不涉及插入和删...

2019-12-29 12:03:18 145

原创 折半查找判定树

具有n个结点的折半查找树的高度为给定一棵树,该树的ASLsucc=(1+22+34+4*4)/11=33/11=3

2019-12-29 11:59:32 4429 1

原创 二叉树的相关操作

二叉树的前序,中序,后序遍历二叉树的节点数,叶子节点树的高度#include#includeusing namespace std;//Á´Ê½´æ´¢struct BiNode{char data;BiNode* lchild, * rchild;};class BiTree{public:BiTree() { root = Creat(); }void PreOr...

2019-12-29 11:52:22 136

原创 最优二叉树

叶子结点的权值:对叶子结点赋予的一个有意义的数值量。二叉树的带权路径长度:设二叉树具有n个带权值的叶子结点,从根结点到各个叶子结点的路径长度与相应叶子结点权值的乘积之和。 记为:哈夫曼树:给定一组具有确定权值的叶子结点,带权路径长度最小的二叉树。哈夫曼树的特点:权值越大的叶子结点越靠近根结点,而权值越小的叶子结点越远离根结点。只有度为0(叶子结点)和度为2(分支结点)的结点,不存在度为...

2019-12-29 11:31:38 1147

原创 树,森林,二叉树之间的转换

森林转换为二叉树⑴ 将森林中的每棵树转换成二叉树;⑵ 从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树根结点的右孩子,当所有二叉树连起来后,此时所得到的二叉树就是由森林转换得到的二叉树。二叉树转换为树或森林⑴ 加线——若某结点x是其双亲y的左孩子,则把结点x的右孩子、右孩子的右孩子、……,都与结点y用线连起来;⑵ 去线——删去原二叉树中所有的双亲结点与右孩子结点的连线;...

2019-12-29 11:25:48 397

原创 memset函数的用法

memset是计算机中C/C++语言函数。将s所指向的某一块内存中的后n个字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为s。...

2019-12-29 11:12:53 68

原创 树的基础概念

结点的度:结点所拥有的子树的个数。树的度: 树中各结点度的最大值。孩子、双亲:树中某结点子树的根结点称为这个结点的孩子结点,这个结点称为它孩子结点的双亲结点兄弟:具有同一个双亲的孩子结点互称为兄弟。同构:对两棵树,若通过对结点适当地重命名,就可以使这两棵树完全相等 (结点对应相等,结点对应关系也相等),则称这两棵树同构。树的存储结构 :双亲表示法孩子表示法-多重链表表...

2019-12-29 11:12:19 72

原创 二叉树的链式存储

非递归后续遍历二叉树做标记:enum Tags{Left,Right};Tags tag; //特征标识申明stack< BiNode * > aStack;stack<StackElement > aStack;//栈申明

2019-12-29 11:04:58 104

原创 二叉树的基本性质

性质5-1 二叉树的第i层上最多有2的(i-1)次方个结点(i≥1)。性质5-2 一棵深度为k的二叉树中,最多有(2的k次方-1)个结点,最少有k个结点。性质5-3 在一棵二叉树中,如果叶子结点数为n0,度为2的结点数为n2,则有: n0=n2+1。练习题已知一棵完全二叉树的第6层(设根为第1层)有8个叶结点,则完全二叉树的结点个数最多是( )A.39 B.52 C.11...

2019-12-29 10:56:56 145

原创 二叉树的基础概念

斜树1 .所有结点都只有左子树的二叉树称为左斜树;2 .所有结点都只有右子树的二叉树称为右斜树;3.左斜树和右斜树统称为斜树。满二叉树在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上。完全二叉树对一棵具有n个结点的二叉树按层序编号,如果编号为i(1≤i≤n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中的位置完全相同。...

2019-12-29 10:50:01 103

原创 二叉树的顺序存储

二叉树的构造void create(char preorder[],char inorder[],int start_p, int end_p,int start_i,int end_i, char data[],int root){if(start_p>end_p)return ;else{int k;for(int i=start_i;i<=end_i;i++){if...

2019-12-29 10:36:20 87

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除