菜鸟笔记
提升您的技术认知

算法笔记 第7页

二叉查找树与平衡二叉树

二叉查找树   二叉查找树,也称二叉搜索树,或二叉排序树。其定义也比较简单,要么是一颗空树,要么就是具有如下性质的二叉树: (1)若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2) 若任意节点的右子树不空,则右子树...

赞(1)菜鸟菜鸟阅读(1969)

平衡二叉树

1.定义 平衡二叉树,又称AVL树,用于解决二叉排序树高度不确定的情况,如果二叉排序树的子树间的高度相差太大,就会让二叉排序树操作的时间复杂度升级为O(n),为了避免这一情况,为最坏的情况做准备,就出现了平衡二叉树,使树的高度尽可能的小,其...

赞(1)菜鸟菜鸟阅读(16154)

一致性哈希算法---负载均衡

场景一:业务服务器 负载的概念就是希望把不同区域的用户(客户端)分发到不同的服务器上,让每个服务器都尽量均衡的接受同等数量的客户端请求,把压力分散于不同的服务器中,所以前面就需要有一台反向代理服务器,也叫负载均衡器。像我们用的nginx、l...

赞(1)菜鸟菜鸟阅读(2445)

动态规划:01背包问题

一、什么是01背包问题?         举个例子,你要去一个水果摊拿水果,每种水果都有对应的两种属性:占用的体积V和蕴含的价值W。而你的背包体积为N。老板说:...

赞(2)菜鸟菜鸟阅读(1951)

动态规划算法---钢条切割

算法进阶—动态规划算法 钢条切割问题: 程序实现: 钢条切割问题: 程序实现: 方法一和方法二是对程序实现的不断深入,逐渐降低算法实现的时间复杂度。 p = [0, 1, 5, 8, 9, 10, 17, 17, 20, 21,...

赞(1)菜鸟菜鸟阅读(1954)

循环队列的实现

前言         本文是《栈与队列》练习题的延续,前文讲到几道经典练习题,但是并未对循环队列进行讲解。博主原本想偷懒不写了,结果这两天重新看到这道题的时候有些生疏,看来还是没有对该题目熟稔于心,本想看看博客笔记进行知识点回顾,结果发现自...

赞(1)菜鸟菜鸟阅读(2985)

判断一个数是不是质数(素数)

一、概念介绍     大家中学都学过,就不过多介绍了,大致提两点:     质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。   &nbs...

赞(1)菜鸟菜鸟阅读(2790)

链表算法实例

 自定义链表 struct MyListNode { int nValue; MyListNode *pPrevNode; MyListNode *pNextNode; }; void AddToTail(MyListNode *...

赞(1)菜鸟菜鸟阅读(2484)

一致性hash

普通的hash函数是和机器个数n相关的。hash(val)=key,得到key之后,key%n就找到对应的机器。但是如果机器个数变化就会导致大量的数据迁移。 一致性hash算法通过一个叫作一致性hash环的数据结构实现。这个环的起点是0,终...

赞(1)菜鸟菜鸟阅读(1610)

迪杰斯特拉(Dijkstra)算法

迪杰斯特拉(Dijkstra)算法是由荷兰计算机科学家狄克斯特拉于1959年提出的。是寻找从一个顶点到其余各顶点的最短路径算法,可用来解决最短路径问题。 迪杰斯特拉算法采用贪心算法的策略,将所有顶点分为已标记点和未标记点两个集合,从起始点开...

赞(1)菜鸟菜鸟阅读(3459)