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

算法笔记 第14页

浅谈递归算法

菜鸟阅读 : 2526赞(1)

1 引言 程序调用自身的编程技巧称为递归( recursion)。递归作为一种算法在程序设计语言中广泛应用。一个方法或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来...

浅谈动态规划

菜鸟阅读 : 1748赞(1)

动态规划算法(Dynamic Programming,简称 DP)似乎是一种很高深莫测的算法,你会在一些面试或算法书籍的高级技巧部分看到相关内容,什么状态转移方程,重叠子问题,最优子结构等高大上的词汇也可能让你望而却步。 而且,当你去看用动...

双指针技巧

菜鸟阅读 : 2323赞(1)

我认为双指针技巧还可以分为两类,一类是「快慢指针」,另一类是「左右指针」。前者解决主要解决链表中的问题,比如典型的判定链表中是否包含环;后者主要解决数组(或者字符串)中的问题,比如二分查找。 一、快慢指针的常见算法 快慢指针一般都初始化指向...

详解二分查找算法

菜鸟阅读 : 2530赞(1)

我周围的人几乎都认为二分查找很简单,但事实真的如此吗?二分查找真的很简单吗?并不简单。看看 Knuth 大佬(发明 KMP 算法的那位)怎么说的: Although the basic idea of binary search is co...

C++求n个数的中位数

菜鸟阅读 : 5243赞(1)

/* * 求n个数的中位数 - C++ - by Chimomo * * 对于一组有有限个数的数据来说,它们的中位数是这样的一种数:这群数据里的一半的数据比它大,而另外一半数据比它小。 * 计算有限个数的数据的中位数的方法是:把所有的同类数...

一个漂亮的打印二叉树的程序

菜鸟阅读 : 2093赞(1)

写二叉树的程序时经常会遇到希望漂亮地把二叉树给输出,本文给出了一个小程序。 以下时打印的效果: // copyright @ L.J.SHOU Jan.16, 2014 // a fancy binary tree printer #ifn...

最短路径算法—–Dijkstra迪杰斯特拉算法

菜鸟阅读 : 4803赞(1)

1 前言 本章介绍迪杰斯特拉算法。和以往一样,本文会先对迪杰斯特拉算法的理论论知识进行介绍,然后给出C语言的实现。后续再分别给出C++和Java版本的实现。 2 迪杰斯特拉算法介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于...

二分查找有序数组

菜鸟阅读 : 3010赞(0)

  昨天百度面试,问了这样一道题:   对于一个有序字符串数组,用二分法查找某一字符串是否存在于该字符串数组中。函数原型为: bool BinarySearch(const vector<string>& array, ...

异质链表

菜鸟阅读 : 2517赞(0)

 程序中,用基类类型指针,可以生成一个连接不同派生类对象的动态链表, 即每个节点指针可以指向类层次中不同的派生类对象。 这种节点类型不相同的链表称为异质链表。 如:任务管理器,管理不同的进程   #include "di...

二叉搜索树

菜鸟阅读 : 3335赞(0)

二叉查找树定义 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所...