算法/数据结构
文章平均质量分 58
小小角色熊
横看成岭侧成峰,远近高低各不同
展开
-
java随机算法
在日常工作中,经常需要使用随机算法。比如面对大量的数据, 需要从其中随机选取一些数据来做分析。 又如在得到某个分数后, 为了增加随机性, 需要在该分数的基础上, 添加一个扰动, 并使该扰动服从特定的概率分布。本文主要从这两个方面出发, 介绍一些算法, 供大家参考。首先假设我们有一个使用的随机函数float frand(), 返回值在(0, 1)上均匀分布。大多数的程序语言库提供这样的函数。 在其他...转载 2018-02-23 11:28:27 · 4545 阅读 · 0 评论 -
AVL树
AVL树给你一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST), 并分析问题所在上面BST(二叉排序树) 存在的问题分析:左子树全部为空,从形式上看,更像一个单链表. 插入速度没有影响 查询速度明显降低(因为需要依次比较), 不能发挥BST的优势,因为每次还需要比较左子树,其查询速度比单链表还慢 解决方案-平衡二叉树(AVL)平衡二叉树:(平衡二叉树的前提...原创 2019-09-15 09:31:40 · 301 阅读 · 0 评论 -
哈夫曼树
哈夫曼树wpl带权路径长度最小的树二叉树树的思想:创建节点,创建二叉树,其中二叉树的操作都定义在节点类里面,二叉树类里调用这些方法,其中定义方法的时候以一个节点为二叉树递归定义。因为一个节点就是一颗二叉树。package binaryTree.huffmanTree;import java.util.*;/** * @Author: 白雄雄 * @Date: 20...原创 2019-09-14 21:00:44 · 132 阅读 · 0 评论 -
堆排序
1:堆毫无疑问,排序两个字没必要去死磕,这里的重点,在于排序的方式,堆排序,就是以堆的形式去排序,毫无疑问,了解堆很重要。那么,什么是堆呢?这里,必须引入一个完全二叉树的概念,然后过渡到堆的概念。上图,就是一个完全二叉树,其特点在于:从作为第一层的根开始,除了最后一层之外,第N层的元素个数都必须是2的N次方;第一层2个元素,第二层4个,第三层8个,以此类推。 而最后一行的...原创 2019-09-10 15:52:20 · 156 阅读 · 0 评论 -
四种数据存储结构---顺序存储 链接存储 索引存储 散列存储
存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储。顺序结构和链接结构适用在内存结构中。索引结构和散列结构适用在外存与内存交互结构。顺序存储:在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构。特点:1、随机存取表中元素。2、插入和删除操作需要移动元素。链接存储:在计算机中用一组任意的存储单元存储线性表的数据元素...原创 2019-03-15 15:05:41 · 2038 阅读 · 0 评论 -
Java面试——HashCode的作用原理和实例解析
1. HashCode的特性(1)HashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,HashCode经常用于确定对象的存储地址;(2)如果两个对象相同, equals方法一定返回true,并且这两个对象的HashCode一定相同;(3)两个对象的HashCode相同,并不一定表示两个对象就相同,即equals()不一定为true,只能说明这两个对象...原创 2019-03-15 15:02:49 · 3109 阅读 · 0 评论 -
排序算法代码总结
[cpp] view plain copy/******************************************************************************************************************************** *功 能:各种排序算法 *作 者:JarvisChu *时 间:2010-05-01 ...原创 2018-02-23 19:51:26 · 214 阅读 · 0 评论 -
回溯法
一. 回溯法 – 深度优先搜素 1. 简单概述 回溯法思路的简单描述是:把问题的解空间转化成了图或者树的结构表示,然后使用深度优先搜索策略进行遍历,遍历的过程中记录和寻找所有可行解或者最优解。基本思想类同于:图的深度优先搜索二叉树的后序遍历 【 分支限界法:广度优先搜索 思想类同于:图的广度优先遍历 ...原创 2018-02-23 19:49:13 · 630 阅读 · 0 评论 -
贪心算法
贪心算法中“贪心”二字形象的说明了该算法的基本思想:贪心(每一步选择都是眼下的局部最优选择)。比如每次给你1张面额不定的纸币,共10次,你这么选?肯定是每次都要一张100元的。当你要拿第一张时,此时眼下最优的选择就是拿一张100的,不会管拿了之后会不会对后面的9张产生影响。这就是一种贪心,当然这种情况下的贪心选择也是最优的选择,因为局部最优导致了整体的最优。贪心算法常用于求解最优解问题,比动态规划...原创 2018-02-23 19:47:28 · 499 阅读 · 0 评论 -
动态规划
分治算法将规模较大的问题划分成规模较小的子问题,通常,这些子问题是不重叠的。这一篇要介绍的动态规划算法,也是基于问题划分,区别在于划分的子问题是有重叠的(黄色部分),这样在求解的过程中,对于重叠的部分只要求解一次,记录下结果(备忘录方法),其他子问题中直接使用即可,减少了重复计算,效率更高。如下图,在计算子问题A的时候需要计算A的子问题a,b,c,计算B的时候需要计算b,c,d,这里b,c就是重叠...原创 2018-02-23 19:46:05 · 139 阅读 · 0 评论 -
prim算法
class minMgraphTree { public void createMgraph(MGraph graph, int vertes, char[] vertex, int[][] weight) { for (int i = 0; i < vertes; i++) { graph.vertex[i] = vertex[i]; ...原创 2019-09-21 21:51:10 · 283 阅读 · 0 评论