算法和数据结构
Andy_Zheng.
这个作者很懒,什么都没留下…
展开
-
算法与数据结构Java版
转自:http://blog.csdn.net/column/details/datastructureinjava.html目录(1)数据结构与算法概念解析(2)数据结构之数组(3)数据结构之栈(4)数据结构之队列(5)数据结构之链表(6)数据结构之二叉树(7)数据结构之霍夫曼树(8)数据结构之红黑树(一)——基础分析(9)数据结构之红黑树(二)——插入操作(10)数据结...转载 2019-07-17 16:34:10 · 209 阅读 · 0 评论 -
Java常用递归适用场景
一、递归概述程序调用自身的编程技巧称为递归.递归作为一种算法在程序设计语言中广泛应用。递归需具备的条件:子问题须与原始问题为同样的事,且更为简单; 不能无限制调用本身,须有个出口,化简为非递归状态处理; 递归的次数不能太多,否则容易造成栈内存溢出(java.lang.StackOverflowError); 构造方法不能递归调用。二、计算任意正整数的阶乘由于受到int、l...转载 2019-06-27 09:13:22 · 1089 阅读 · 0 评论 -
红黑树原理解析以及Java实现
红黑树本文的主要内容: 1、红黑树的基本概念以及最重要的5点规则。 2、红黑树的左旋转、右旋转、重新着色的原理与Java实现; 3、红黑树的增加结点、删除结点过程解析;1.红黑树的基本概念与数据结构表示首先红黑树来个定义:红黑树定义:红黑树又称红-黑二叉树,它首先是一颗二叉树,它具体二叉树所有的特性。同时红黑树更是一颗自平衡的排序二叉树(平衡二叉树的一种实现方式)。我们知道一颗基本的二叉排序树他们...转载 2018-07-15 21:45:49 · 577 阅读 · 0 评论 -
Java二分法查找
package com.trs.arithmetic;public class BinarySearch { /** * 二分查找 * 简介: 在二分搜寻法中,从数列的中间开始搜寻,如果这个数小于我们所搜寻的数,由于数列已排序,则该数左边的数一定都小于要搜寻的对象, * 所以无需浪费时间在左边的数;如果搜寻的数大于所搜寻的对象,则右边的数无需再搜寻,直接搜寻左边的数。 * @param...转载 2018-06-28 14:29:31 · 1824 阅读 · 0 评论 -
JAVA递归算法
1.什么是递归算法 递归算法就是直接或间接调用自己的算法2.问题1:一列数的规则如下: 1、1、2、3、5、8、13、21、34 ,求第30位数是多少?使用递归实现 1 public class FibonacciSequence { 2 public static void main(String[] args){ 3 System.out.println(Fri...转载 2018-06-29 21:49:52 · 546 阅读 · 0 评论 -
数据结构—二叉树
关于二叉树有一点需要注意:二叉树并不是树的一种特殊形式。二叉树又有几种特殊的形式:二叉排序树(二叉查找树)、最优二叉树(哈弗曼树)、二叉堆。二叉排序树它或者是一棵空树;或者是具有下列性质的二叉树: 1,若左子树不空,则左子树上所有结点的值均小于它的根结点的值; 2,若右子树不空,则右子树上所有结点的值均大于它的根结点的值; 3,左、右子树也分别为二叉排序树;转载 2017-11-17 16:11:28 · 255 阅读 · 0 评论 -
排序算法之快速排序
1、基本思想:快速排序是我们之前学习的冒泡排序的升级,他们都属于交换类排序,都是采用不断的比较和移动来实现排序的。快速排序是一种非常高效的排序算法,它的实现,增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较小的记录从后面直接移动到前面,从而减少了总的比较次数和移动次数。同时采用“分而治之”的思想,把大的拆分为小的,小的拆分为更小的,其原理如下:对于给定的一组记录,原创 2017-07-29 09:36:32 · 320 阅读 · 0 评论 -
算法复杂度
算法复杂度 算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小。时间复杂度1.时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中原创 2017-06-19 10:00:47 · 232 阅读 · 0 评论 -
排序算法之选择排序
选择排序改进了冒泡排序,将必要的交换次数从O(N²)减少到O(N),但是比较次数不变,仍为O(N²),然而,选择排序仍然为大数据的排序提出了一个非常重要的改进,因为这些大量的记录需要再内存中移动,这就使交换的时间和比较的时间相比,交换时间显得更为重要。 原理:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。在n-i+1(i原创 2017-05-27 13:52:41 · 276 阅读 · 0 评论 -
排序算法之冒泡排序
排序是数组常用的算法,排序算法的优劣直接影响程序的效率。 冒泡排序的简单理解:第一次找到所有元素中的最大的放到最后一个位置上,不再变动;第二次找到剩余所有元素中最大的放到倒数第二个位置上,不再变动;以此类推,直到排序完成。由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。 原理如图所示:代码如下图:import java.util.Arr原创 2017-05-27 09:58:41 · 263 阅读 · 0 评论