![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
雾幻
种一棵树最好的时间是十年前,而后是现在
展开
-
java查找算法:线性查找、二分查找
线性查找从前往后依次对比需要查找的数据,如果找到对应的元素,则返回元素的位置。 a.使用目标元素与样本数列中的第一个元素起依次比较大小; b.若找到与目标元素相等的元素,则表示查找成功; c.若目标元素与样本数列的所有元素比较完毕也没有找到相等的元素,则表示查找失败。1. 二分查找算法流程 a.假定样本数列中的所有元素都是从小到大排列的。 b.使用目标元素...原创 2018-10-18 09:13:03 · 856 阅读 · 0 评论 -
java排序算法:冒泡排序、插入排序、选择排序、快速排序
1. 冒泡排序核心思想:相邻的元素进行比较,满足条件就进行交换。如果一趟排序中没有出现元素交换则排序完成。 a.比较相邻位置的两个元素,若第一个元素(左边)比第二个元素(右边)大,则交换元素的位置。 b.从开始的第一对元素一直到结尾的最后一对,经过这一轮,排在最后的元素将是这组元素的最大值。 c.重复步骤b持续对越来越少的元素进行两两比较,直到所有元素处理完毕为止。 ...原创 2018-10-18 09:13:16 · 248 阅读 · 0 评论 -
HashMap原理与实现
HashMap是基于哈希表的 Map 接口的实现,以key-value的形式存在。系统会根据hash算法来来计算key-value的存储位置,可以通过key快速地存、取value。HashMap提供了三个构造函数: HashMap():构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap。 HashMap(int initialCapacity)...原创 2018-10-23 19:13:01 · 148 阅读 · 0 评论 -
treeMap与treeSet
为了理解 TreeMap 的底层实现,必须先介绍排序二叉树和红黑树这两种数据结构。其中红黑树又是一种特殊的排序二叉树。排序二叉树排序二叉树是一种特殊结构的二叉树,可以非常方便地对树中所有节点进行排序和检索。排序二叉树要么是一棵空二叉树,要么是具有下列性质的二叉树:若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值...原创 2018-10-23 19:19:10 · 338 阅读 · 0 评论 -
链表与栈——数组入栈出栈、单链表翻转
数组入栈出栈class Stack{ private Object[] data = new Object[0]; //栈的内容 private int size = 0; //栈的元素个数 public boolean isFull(){ //判断栈是否满 return data.length == size; } public boolean isEmpty(){ //判断栈...原创 2018-10-23 19:21:23 · 474 阅读 · 0 评论 -
二叉树遍历——深度优先遍历、广度优先遍历
二叉树遍历简介深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历、中序遍历、后序遍历。具体说明如下:先序遍历:对任一子树,先访问根,然后遍历其左子树,最后遍历其右子树。中序遍历:对任一子树,先遍历其左子树,然后访问根,...原创 2018-10-23 19:41:03 · 29255 阅读 · 4 评论 -
前序遍历、中序遍历、后序遍历代码实现——迭代与非迭代方式
迭代方式实现前序遍历——迭代public static void preOrder(TreeNode node){ if(node==null) return; System.out.println(node.getData()+" "); preOrder(node.left); preOrder(node.right); }中序遍历——迭代p...原创 2018-10-23 19:55:25 · 1065 阅读 · 0 评论 -
java代码实现求树的高度和节点数
求二叉树的高度public int getHeight(TreeNode node){ if(node == null){ return 0; } int i = getHeight(node.left); int j = getHeight(node.right); return (i<j)? j+1:i+1;}求二叉树的节点数public int getSize(...原创 2018-10-23 19:56:54 · 5791 阅读 · 0 评论 -
斐波那契数列——java代码实现
定义数组方法public class Demo1 { public static void main(String[] args) { int arr[] = new int[20]; arr[0] = arr[1] = 1; for (int i = 2; i < arr.length; i++) { arr[i] = arr[i - 1] + arr[i - 2];...原创 2018-10-23 20:09:02 · 13642 阅读 · 2 评论