数据结构算法学习
数据结构与算法
MEME_UP
不积跬步无以至千里
展开
-
数据结构及算法 | Java数据结构——回溯算法之子集树
1、介绍一下子集树,什么是子集树?当所给问题是从n个元素的集合S中找出满足某些条件或者性质的子集时,解空间是子集树;比如典型的0-1背包问题-----and-----轮船装载问题:解空间 就是指满足问题要求的所有解组成的集合,一个问题的解往往包含了得到这个解的每一步,就是抽象的对应解空间树的从根节点到叶子节点的一条路径。时间复杂度为O(2的n次方)。下面现用我们老师给出的一个引入话题的例...原创 2019-07-25 23:17:33 · 649 阅读 · 0 评论 -
数据结构及算法 | Java数据结构——AVL平衡二叉搜索树
一、什么是(AVL)平衡二叉搜索树?平衡二叉搜索树在二叉树的概念基础上增加了平衡的概念,所谓平衡就是左右子树的高度差不能大于 1(小于或者等于1都可称作平衡的)。所以为了让二叉树达到平衡,又可以引入四种调节平衡的操作:左旋转、右旋转、左平衡、右平衡。二、四种旋转的具体过程及如何实现?1、左旋转:当右孩子的右子树太高的时候,用左旋转进行调整,如图:代码实现参考:/** * 以参数no...原创 2019-07-22 20:29:44 · 198 阅读 · 0 评论 -
数据结构及算法 | Java数据结构——BST二叉搜索树(下)
上次关于BST二叉搜索树的部分还遗留有一些扩展型的问题,以及增加、删除、查找元素的递归实现,此篇作为补充。一、必备基础操作的实现1、BST树的插入元素的递归实现/** * BST树的递归插入API接口 */private void insert(T data){ this.root = insert(data,root);}//递归实现的过程private BSTNod...原创 2019-07-09 18:44:36 · 176 阅读 · 0 评论 -
数据结构及算法 | Java数据结构——BST二叉搜索树(上)
一、BST相关概念BST(二叉搜索树)可以实现增加、删除、搜索的时间复杂度都为log2n(以2为底,并非2n)。关于树的基础概念根据图中数据解释以便理解:58是根节点root;23是58的左孩子;82是58的右孩子;23是12和35的父节点;12是23的左孩子;35是23的右孩子;而23作为父节点,它的左孩子以及孩子和孩子,即23、12、35、18、47这些叫做58的左子树;他的右孩子及孩...原创 2019-06-29 15:43:20 · 325 阅读 · 0 评论 -
数据结构及算法 | Java基础数据结构之栈和队列
此篇仅为自己写过的代码存档,电脑上存太多回乱,但又想以后翻出来看看故不想删除1、栈(先进后出,后进先出)package com.Homeworks;import java.util.Random;import java.util.Arrays;public class SeqStack<T>{ private T[] stack; private int t...原创 2019-05-30 11:50:16 · 115 阅读 · 0 评论 -
数据结构及算法 | Java的堆排序及其他排序算法小结
常见算法或者工具1、朴素算法2、KMP算法3、哈希表4、形状树5、冒泡排序算法6、选择排序算法7、插入排序算法8、快速排序算法9、归并排序算法原创 2019-06-17 00:02:51 · 110 阅读 · 0 评论 -
数据结构及算法 | 递归和排序之递归函数、快速排序和归并排序
递归函数1、原理:递归的实质就是函数调用自身,过程分为递过去和归回来两个部分。递过去:缩小范围归回来:计算值递归函数需要注意的两个点:1、判断递归结束的条件2、判断n与n-1之间的关系更具体的解释看图理解,语言能力有限!用递归求6!的结果:2、代码如下:private boolean func3(int[] arr) { return func3(arr, 0, arr...原创 2019-06-06 00:42:45 · 537 阅读 · 0 评论 -
数据结构及算法 | 基础排序算法之冒泡排序、插入排序和选择排序
一、冒泡排序1、原理:将给定的数组中的元素按从小到大的顺序排列,冒泡排序是从第一个元素开始相邻两个元素比较,将值大的那个元素往后挪,这样一遍下来,数组中最大的元素就放在了最后一个位置上;第二遍遍历同上,但只比较到倒数第二个位置,将找到的最大值放在倒数第二个位置上,以此类推。过程可看图示:2、代码如下:public class Sort { public static void ma...原创 2019-06-05 15:23:59 · 192 阅读 · 0 评论