
算法与数据结构
西红柿系番茄
知其然,知其所以然。
展开
-
链表的实现
Java的List接口有两个比较常用的实现类,分别是ArrayList和LinkedList。关于它们的区别主要是ArrayList使用动态数组存储数据,而LinkedList使用相互链接的节点存储数据。关于它们的性能比较,具体要看进行的是什么操作,此处不赘述。相关知识:1、链式结构是一种数据结构,它使用对象引用变量来创建对象之间的链接。2、链表由一些对象构成,其中每个对象指向了链表的...原创 2018-08-11 13:24:18 · 480 阅读 · 0 评论 -
排序二叉树的实现
树是一种非线性结构 ,其中的元素被组织成一个层次结构。结点最多具有两个孩子的树称为二叉树。相关术语:结点、边、根、孩子、兄弟、叶子、内部结点、祖先、子孙、路径长度、高度。下面我们来实现一个可排序的二叉树结构。关键:节点元素大于左孩子节点元素,小于或等于右孩子节点元素。一、定义泛型类因为需要排序,所以元素必须实现Comparable接口。二、定义成员变量1、根...原创 2018-08-11 22:28:04 · 683 阅读 · 0 评论 -
Java的几种排序算法和查找算法
一、介绍几种常见的排序算法:直接插入排序、简单选择排序、冒泡排序、快速排序。1、直接插入排序描述:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。 算法:从第二个数(当前数)开始,拿它与前一个数(比较数)比较--如果比较数大于当前数,则让比较数往后移动一...原创 2018-07-31 23:03:26 · 1762 阅读 · 4 评论 -
归并排序
简单粗暴的解释:内部有序外部无序的两个数组的排序。归并排序以O(NlogN)最坏情形时间运行,而所使用的比较次数几乎是最优的。它是递归算法一个好的实例。典型应用场景:MapReduce。 递归:一个方法调用自己本身。其关键点是要找到结束方法递归调用的条件出口。归并排序的合并算法说明,内容直接截取自《数据结构与算法分析·Java语言描述·第3版》。一、实现Java语言描述...原创 2018-12-01 14:32:19 · 361 阅读 · 0 评论 -
负载均衡算法
不管是Nginx从集群中选出一台提供访问的服务器,还是RPC框架(Dubbo,Spring Cloud等)的消费者从注册中心提供的列表中选出一台提供者,都涉及到负载均衡。下面介绍几种常见的负载均衡算法,包括轮询法、随机法、客户端地址哈希法、加权轮询法、加权随机法,然后讲解一下Dubbo的随机法。在开始之前,创建一个类Server,模拟真实场景中的服务器或者提供者。它有两个属性,IP地址和权...原创 2019-01-16 23:36:34 · 373 阅读 · 0 评论