随笔分类 -  算法

摘要:平衡二叉树(AVL树) 定义 或是空树或是每个结点深度之差不超过1的二叉排序树举例如下(结点的平衡因子=左子树深度-右子树深度): 旋转(将二叉排序树调整为二叉平衡树) 由于在二叉平衡树中插入或删除结点后,可能使平衡二叉树失去平衡,因此需要对其进行调整。假设结点a是失去平衡的最小子树的根结点 1. 阅读全文
posted @ 2021-05-27 15:23 跌落星球 阅读(34) 评论(0) 推荐(0) 编辑
摘要:二叉排序树(查找、结点增加、删除) 定义 或是空树 或具有下列性质: 若左子树不为空,则左子树上所有结点的值均小于根结点的值若右子树不为空,则右子树上所有结点的值均大于根结点的值左右子树本身也是一棵二叉排序树 举例: 优点 提高查找和插入删除关键字的速度 结点查找 算法分析 若二叉排序树为空,查找失 阅读全文
posted @ 2021-05-16 14:44 跌落星球 阅读(94) 评论(0) 推荐(0) 编辑
摘要:二叉树的遍历算法(递归、层次、非递归) 递归、层次遍历算法 先序遍历 若二叉树为空,遍历结束;否则,先根结点、再左子树、后右子树 /* //二叉链表结点定义 template <class T> class BiTreeNode { public: T data; //数据域 BiTreeNode< 阅读全文
posted @ 2021-05-12 17:16 跌落星球 阅读(273) 评论(0) 推荐(0) 编辑
摘要:索引表的顺序查找 基本策略 采用建立“目录”的形式,先查找目录,然后根据目录将需要的数据块读入内存,从而实现只需先对小部分数据进行查询,提高查找效率的效果 索引表的建立 将线索表中数据按关键字分为若干块(块可按升序、降序排序)对每块建立索引项,每一个索引项均包含: 关键字项(该块的最大、最小关键字) 阅读全文
posted @ 2021-04-25 12:59 跌落星球 阅读(48) 评论(0) 推荐(0) 编辑
摘要:链式基数排序 基本策略 分配 收集 何为链式基数排序? 将单关键字排序转成多关建字排序,具体为,在排序过程中,将关键字拆分成若干项,然后把每一项作为一个“关键字“。对于整数或字符串型的关键字,可将其拆分为单个数字或单个字母。例如:当单关键字“ 123 ”,从低位到高位可拆成关键字 “3”,“2”,“ 阅读全文
posted @ 2021-04-22 16:25 跌落星球 阅读(109) 评论(0) 推荐(0) 编辑
摘要:简单选择排序算法 基本策略 每次从无序序列中选出一个关键字最大(最小)的记录添加到有序序列尾部 基本思想 第一趟:从长度为len的序列中选出关键字最大(最小)的记录与第1个记录交换 第二趟:从第2个数据开始,从长度为 len-1 的序列中选出关键字最大(最小)的记录与第2个记录交换 第三趟:从第3个 阅读全文
posted @ 2021-04-20 12:56 跌落星球 阅读(33) 评论(0) 推荐(0) 编辑
摘要:基本思想 是一种两两比较、交换的交换排序算法对于长度为 n 的序列,第 i 趟操作流程为:从序列最左边开始,比较第1个和第2个,如果不满足排序要求,则进行交换,交换后,再比较第2和第3个,如果不满足排序要求,则进行交换,一直如此比较下去,直到比较完第 n - i 和 n - i +1个数据,则该趟全 阅读全文
posted @ 2021-04-05 21:16 跌落星球 阅读(15) 评论(0) 推荐(0) 编辑
摘要:基本思想 根据步长给序列分组,每组又通过直接插入排序算法进行排序,然后通过不断缩短步长,直接插入排序算法进行排序,直至步长为1,则序列排序完成。 直接插入与希尔排序适用情况 思路分析 选定步长gap,将 gap 位定为 i,则 i 与 i - gap位为一组序列 通过直接插入排序将该序列进行排序,排 阅读全文
posted @ 2021-04-04 20:35 跌落星球 阅读(17) 评论(0) 推荐(0) 编辑
摘要:基本思想 将序列分成两部分,左边按关键字有序排列,右边无序排列初始,默认第一个元素有序,其余元素无序。如此,序列便分为左右两部分,左边有序,右边无序。然后,将右边的元素插入到左边合适位置,使得左边序列仍然有序。最后,当右边序列长度为0时,整个序列就从无序变为有序了。 例如:序列[9,5,6,4,2, 阅读全文
posted @ 2021-04-04 16:27 跌落星球 阅读(43) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示