
1.基础算法
文章平均质量分 53
常用算法总结
pziwang
云中台java项目,信息学奥赛辅导
展开
-
java实现绘制命令行二叉树
题目描述二叉树是一种基本的数据结构,它要么为空,要么由根节点,左子树和右子树组成,同时左子树和右子树也分别是二叉树。当一颗二叉树高度为m-1m−1时,则共有mm层。除mm层外,其他各层的结点数都达到最大,且结点节点都在第mm层时,这就是一个满二叉树。现在,需要你用程序来绘制一棵二叉树,它由一颗满二叉树去掉若干结点而成。对于一颗满二叉树,我们需要按照以下要求绘制:1、结点用小写字母“o”表示,对于一个父亲结点,用“/”连接左子树,同样用“\”连接右子树。2、定义[i,j[i,j]为位于第ii行第jj原创 2022-05-15 20:51:14 · 399 阅读 · 0 评论 -
图的基本思想和实现
图的基础概念原创 2022-05-11 22:13:28 · 297 阅读 · 0 评论 -
红黑树实现
红黑树-特殊的二叉搜索树红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。# 特殊的特征除了具备该特性之外,红黑树还包括许多额外的信息。每个节点或者是黑色,或者是红色。根节点是黑色。每个叶子节点是黑色。 注意:这里叶子节点,是指为空的叶子节点!如果一个节点是红色的,则它的子节点必须是黑色的。从一个节点到该节点的原创 2022-05-08 22:19:28 · 657 阅读 · 1 评论 -
线性表(链表)
线性表#学习目标掌握线性表基础思想、优缺点、常见分类,能复述;能使用java代码实现线性表创建,元素插入、删除、元素修改、查找;完成一道相关题目。#基础思想、优缺点1.基础思想在内存中可以非连续存储,提高空间利用率,理论上其大小是内容能使用空间的大小(非连续);2.优缺点优点:空间无限制插入元素、删除元素很快缺点:查找速度很慢。#常见分类**单向链表:**一个节点只指向下一个节点**双向链表:**一个节点同时包含下一个节点和上一个节点的引用(指针)**环形链表:**原创 2022-05-07 17:30:00 · 177 阅读 · 0 评论 -
查找二叉树
二叉搜索树Binary Search Tree 能够用于快速查找的存储数据结构,左子树值<根节点值<右子树值# 定义它或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树。# 遍历以遍历根节点的顺序来定义前序遍历:根-左-右中序遍历:左-根-右 —>遍历结果为有序递增序列后序遍历:左-右-根原创 2022-05-06 22:28:08 · 623 阅读 · 0 评论 -
平衡二叉树
平衡二叉树Balanced Binary Tree,左右子树高度差不超过1,因此能够保证很好的插入和查找效率# 定义左右子树高度差不超过1左右子树也是平衡二叉树空二叉树是平衡二叉树#实现节点定义package com.piziwang.tree.avltree;/** * 平衡二叉树 Balance Binary Tree * @author PIZIWANG * @date 2022-05-05 21:37 **/public class AVLTree<原创 2022-05-06 22:27:09 · 648 阅读 · 0 评论 -
二分查找基础算法
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2022-04-04 23:19:18 · 340 阅读 · 0 评论 -
递归基础算法
递归算法1. 递归【应用】递归的介绍以编程的角度来看,递归指的是方法定义中调用方法本身的现象把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算递归的基本使用public class MyFactorialDemo2 { public static void main(String[] args) { int sum = getSum(100); System.out.原创 2022-04-02 23:22:14 · 138 阅读 · 0 评论 -
快速排序基础算法
快速排序一、算法描述每一轮排序选择一个基准点(pivot)进行分区让小于基准点的元素的进入一个分区,大于基准点的元素的进入另一个分区当分区完成时,基准点元素的位置就是其最终位置在子分区内重复以上过程,直至子分区元素个数少于等于 1,这体现的是分而治之的思想 (divide-and-conquer)从以上描述可以看出,一个关键在于分区算法,常见的有洛穆托分区方案、双边循环分区方案、霍尔分区方案二、单边循环快排(lomuto 洛穆托分区方案)选择最右元素作为基准点元素j 指针原创 2022-04-01 21:59:39 · 155 阅读 · 0 评论 -
插入排序算法
插入排序1.插入排序规则划分两个子序列,有序的和无序的;从无序序列中取出一个元素,插入到有序序列(保证顺序)。扩大有序子序列,减小无序子序列;重复以上步骤.public static void insert(int[] a){ //i 代表待插入元素的索引,1个元素默认有序 for(int i = 1;i< a.length;i++){ int t = a[i];//代表插入的元素值 int j=i-1;//代表已排序子序列的元素索引原创 2022-03-31 23:55:39 · 360 阅读 · 0 评论 -
选择排序算法
选择排序1.选择排序规则先找出未排序序列中的最值元素;将找出元素放入已排序序列;在未排序序列中再次重复执行前两步操作;未排序序列长度为0,结束排序。public static void selection(int[] a){ for(int i = 0;i < a.length-1;i++){ //i代表每轮选择最小元素要交换到的目标索引(这个位置的元素这轮要有序) int s = i; for(int j=s+1;j<a.原创 2022-03-30 23:02:51 · 199 阅读 · 0 评论 -
冒泡排序算法
冒泡排序,及两类冒泡排序优化原创 2022-03-30 22:59:39 · 213 阅读 · 0 评论