chengonghao的博客

Practice Makes Perfect

排序:
默认
按更新时间
按访问量
RSS订阅

最小生成树----算法导论

《算法导论》上已经解释的非常清楚了,于是直接照搬过来吧,本文转载自《算法导论》

2016-09-06 11:42:26

阅读数 561

评论数 0

二叉树的非递归遍历

二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。...

2016-08-29 14:45:08

阅读数 445

评论数 0

Dijkstra 算法的 C/C++ 实现

Dijkstra算法 Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,是广度优先算法的一种,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。其基本原理是:每次新扩展一个距离最短的点,更新与其相邻的点的距离。当所有边权都为正时,由于不会...

2016-08-28 18:47:59

阅读数 4616

评论数 0

strcpy 的实现

// 字符串拷贝.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #define CONTAIN_OF_ZERO_BYTE(n) \ (((n - 0x01010101) & (~n)) & 0x...

2016-08-21 14:53:00

阅读数 228

评论数 0

图的深度优先搜索----算法导论

《算法导论》上已经解释的非常清楚了,于是直接照搬过来吧,本文转载自《算法导论》

2016-08-15 10:17:59

阅读数 315

评论数 0

图的广度优先搜索----算法导论

《算法导论》上已经解释的非常清楚了,于是直接照搬过来吧,本文转载自《算法导论》

2016-08-15 09:41:06

阅读数 336

评论数 0

AVL树,红黑树,B树,B+树,Trie树应用场景简介

转载自:点击打开链接 AVL树,红黑树,B树,B+树,Trie树应用场景简介   1.AVL树: 平衡二叉树,一般是用平衡因子差值决定并通过旋转来实现,左右子树树高差不超过1,那么和红黑树比较它是严格的平衡二叉树,平衡条件非常严格(树高差只有1),只要插入或删除不满足上面的条件就要...

2016-08-10 10:21:38

阅读数 725

评论数 0

基数排序----算法导论

《算法导论》上已经解释的非常清楚了,于是直接照搬过来吧,本文转载自《算法导论》

2016-08-08 10:54:32

阅读数 254

评论数 0

桶排序的应用

本文转载自:点击打开链接 桶排序(Bucket Sort)有时也称为盒子排序(Bin Sort),来源于邮局使用的盒子信件分发方法。桶排序的有效性需假定输入数据是由一个完全随机过程产生,即要求桶排序的输入数据呈均匀分布,例如,输入数据随机均匀分布在区间[0, 1)。 桶排序思想...

2016-08-08 10:45:16

阅读数 860

评论数 1

计数排序----算法导论

《算法导论》上已经解释的非常清楚了,于是直接照搬过来吧,本文转载自《算法导论》

2016-08-08 10:34:47

阅读数 211

评论数 0

Top K 算法详解

转载自:点击打开链接 应用场景:         搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。         假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复...

2016-07-26 10:25:47

阅读数 563

评论数 0

KMP 算法的数学推导

不论从逻辑上怎么分析KMP算法,只要不给出具体的数学公式,都是不严谨的,直到看了KMP算法的数学公式,我才真正理解了该算法。            假设有一个待匹配的源字符串S,其数学表达式如下:                   接下来我们还有一个模式字符串t,其数学表达式如下:    ...

2016-07-21 10:57:05

阅读数 1249

评论数 0

C++ 实现 0-1 背包问题

1.什么是动态规划 首先介绍一下动态规划... 设计一个动态规划算法,通常可按照以下几个步骤进行: (1) 找出最优解的性质,并刻画其结构特征。 (2) 递归地定义最优解的值 (3) 以自底而上的方式计算出最优值 (4) 根据计算最优值时得到的信息,构造一个最优解。 对于一...

2016-07-15 10:59:28

阅读数 10052

评论数 1

C++实现最长公共子序列和最长公共子串

转载自:点击打开链接 #include "stdafx.h" #include #include using namespace::std; int lcs(string str1, string str2) { int len1 = str1.size(); ...

2016-07-14 21:36:34

阅读数 12189

评论数 0

动态规划--钢条切割

朴素递归: /* 朴素递归算法,计算当钢条长度为 n 时,计算最大收益 输入参数: p:价格数组,长度为 i 的钢条的价格为 p[i] n:钢条长度 返回值: 最大收益 */ CUT-ROD( p, n ) if n == 0 // 递归结束的条件:钢条的长度为 0 r...

2016-07-12 10:30:56

阅读数 331

评论数 0

排序--散列查找

class HashTable{ #define HASHSIZE 12 #define NULLKEY -32768 private: typedef struct{ int* elem; int count; }_hash_table; int m = 0 ; publi...

2016-06-24 09:41:03

阅读数 270

评论数 0

查找--插值查找

二分查找每次都是从中间开始,没有考虑数据之间的关系,这是一种比较低效的实现方法,插值查找就是在二分查找的基础上,改进的中间记录的选取。 虽然插值查找的时间复杂度月二分查找相同,都是 O(logn),但是对于表比较大,而关键字分布比较均匀的查找,插值算法的平均性能比折半查找要好很多。反之,线性表中...

2016-06-23 15:50:48

阅读数 1095

评论数 0

查找--二分查找

二分查找的前提是线性表中的记录必须是有序的,线性表必须采用顺序存储。 二分查找的基本思想是: 1.在有序表中,取中间记录作为比较对象,若给定值与中间记录的值相等,则查找成功; 2.若给定值小于中间记录的值,则在中间记录的左半区继续查找; 3.若给定值大于中间记录的值,则在中间记录的右半...

2016-06-23 15:41:46

阅读数 208

评论数 0

扑克牌顺子

扑克牌顺子 参与人数:2032时间限制:1秒空间限制:32768K 本题知识点: 字符串  算法知识视频讲解 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到...

2016-06-21 22:16:01

阅读数 312

评论数 0

排序--快速排序

快速排序的时间复杂度:O( nlogn )  C# 版 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;...

2016-06-12 17:35:08

阅读数 312

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭