算法
文章平均质量分 94
苦_咖啡
这个作者很懒,什么都没留下…
展开
-
链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)
链表排序(冒泡、选择、插入、快排、归并、希尔、堆排序)以下排序算法的正确性都可以在LeetCode的链表排序这一题检测。本文用到的链表结构如下(排序算法都是传入链表头指针作为参数,返回排序后的头指针)struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {转载 2014-04-15 17:42:36 · 1232 阅读 · 0 评论 -
【算法导论】二叉树的前中后序非递归遍历实现
二叉树的非递归遍历原创 2015-01-08 20:47:47 · 3939 阅读 · 1 评论 -
【算法导论】用动态规划解活动选择问题
上一篇讲了贪心算法来解活动选择问题(【算法导论】贪心算法之活动选择问题),发现后面有一道练习16.1-1是要用动态规划来解活动选择问题。其实跟之前的矩阵链乘法有些相似,也是考虑分割的活动是哪一个,并用二维数据来记录Sij---最大兼容集合个数,和用另一个二维数据来记录Sij取得最大时的活动分割点k。然后就是考虑边界问题,和使用递归来求动态规划的最优解。#i原创 2015-01-28 22:19:11 · 3093 阅读 · 0 评论 -
【算法导论】0-1背包问题
0-1背包问题描述:已知:小偷在店里偷东西,小偷只带了一个最大承重为W的背包,商店里有N件商品,第i件商品的重量是weight[i],价钱是value[i]。限制:每种商品只有一件,可以选择拿或者不拿,不能分割,不能只拿一件商品的一部分(所以叫做0-1,0即不拿,1则整个拿走,且一种商品有且只有一件可供拿走)问题:在不超过背包最大承重的情况下,最多能拿走多少钱的商品原创 2015-01-30 21:36:58 · 1982 阅读 · 0 评论 -
【算法导论】二叉搜索树的插入和删除
阐述二叉搜索树的插入和删除节点操作。原创 2015-01-11 11:47:20 · 3208 阅读 · 0 评论 -
【算法导论】红黑树详解之一(插入)
红黑树是建立在二叉查找树的基础之上的,关于二叉查找树可以参看【算法导论】二叉搜索树的插入和删除和【算法导论】二叉树的前中后序非递归遍历实现。对于高度为h的二叉查找树而言,它的SEARCH、INSERT、DELETE、MINIMUM、MAXIMUM等操作的时间复杂度均为O(h)。所以在二叉查找树的高度较高时,上述操作会比较费时,而红黑树就可以解决这种问题。原创 2015-01-14 11:11:47 · 15843 阅读 · 8 评论 -
【算法导论】贪心算法之赫夫曼编码
概述 讨论赫夫曼编码问题,赫夫曼编码的思想就是变长编码。变长编码就是让字符表中出现概率高的字符的编码长度尽可能小,而出现概率高的字符的编码长度相对较长。然后还要遵循前缀码的要求,就是任意一个编码都不是其他编码的前缀码,这样方便解码。 对于原创 2015-02-01 16:31:02 · 2306 阅读 · 0 评论 -
【算法导论】动态规划之“最优二叉搜索树”
详解动态规划之“最优二叉搜索树”原创 2015-01-24 16:11:09 · 9924 阅读 · 3 评论 -
【算法导论】动态规划之“钢管切割”问题
动态规划,其实跟分治法有些相似,基本思想都是将复杂的问题分成数个简单的子问题,然后再去解决。它们的区别在于,分治法关注的子问题不相互“重叠”,而动态规划关注的子问题,多是相互“重叠”的。原创 2015-01-18 10:34:59 · 12221 阅读 · 5 评论 -
【算法导论】动态规划之“矩阵链乘法”问题
动态规划-“矩阵链乘法”问题原创 2015-01-21 15:12:09 · 18016 阅读 · 4 评论 -
贝叶斯反垃圾邮件技术
一、 贝叶斯反垃圾邮件技术介绍 贝叶斯是基于概率的一种算法,是Thomas Bayes:一位伟大的数学大师所创建的,目前此种算法用于过滤垃圾邮件得到了广泛地好评。贝叶斯过滤器是基于“自我学习”的智能技术,能够使自己适应垃圾邮件制造者的新把戏,同时为合法电子邮件提供保护。在智能邮件过滤技术中,贝叶斯(Bayesian)过滤技术取得了较大的成功,被越来越多地应用在反垃圾邮件的产品中。 二、 贝转载 2015-01-21 21:11:55 · 1961 阅读 · 0 评论 -
二叉树的非递归遍历
二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说转载 2015-01-04 15:22:11 · 653 阅读 · 0 评论 -
【算法导论】同时求数组的最大值和最小值
算法导论(第三版)第九章里提出过一个比较有意思的小问题:如何在最短的时间内求出一个n长数组中最大和最小问题。下面就来做一个实现。 思路: ①把数组分成两个两个一组,然后先让子数组内部比较出一个大的和一个小的,然后最大值只跟子数组内的大值做比较,小值只跟子数组内的最小值做比较,如果发现符合的,则重新赋值。 ②对于偶数的数组原创 2015-01-26 10:05:00 · 2873 阅读 · 0 评论 -
【算法导论】贪心算法之活动选择问题
贪心算法解决活动选择问题原创 2015-01-27 20:43:22 · 17875 阅读 · 0 评论 -
每天一道ACM(1003)--斐波那契数列
每天一道ACM(1003)--斐波那契数列原创 2014-12-02 23:43:18 · 2213 阅读 · 0 评论 -
判断两棵树是否相等
题目:请实现两棵树是否相等的比较,相等返回,否则返回其他值,并说明算法复杂度。数据结构为:[cpp] view plaincopytypedef struct_TreeNode{ char c; TreeNode *leftchild; TreeNode *rightchild; }TreeNo转载 2014-10-27 00:24:23 · 1210 阅读 · 0 评论 -
深入浅出单实例Singleton设计模式
转自:http://blog.csdn.net/haoel/article/details/4028232,作者:陈皓深入浅出单实例Singleton设计模式前序单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。这样做当然是有必然的,转载 2014-11-27 14:45:31 · 987 阅读 · 0 评论 -
【算法导论】快速排序
搞这一行还是始终绕不过数据结构算法这一个坎,自己不是科班出身,还是脚踏实地一步一步的开始学原创 2014-11-19 21:29:00 · 1187 阅读 · 1 评论 -
【算法导论】堆排序
算法基础之堆排序,欢迎拍砖!原创 2014-12-16 10:11:01 · 1449 阅读 · 0 评论 -
【算法导论】十一章散列表11.1-4大数组实现直接寻址方式的字典操作
算法导论第三版,第十一章散列表 习题11.1-4 大数组实现直接寻址方式的字典操作。原创 2015-01-05 16:33:54 · 1219 阅读 · 0 评论 -
【算法导论】线性时间排序之 决策树&计数排序
本文讲述的决策树和计数排序的基本原理和实现方法,欢迎拍砖!原创 2014-12-24 15:23:38 · 2273 阅读 · 0 评论 -
【算法导论】中位数和顺序统计量之选择算法
本文阐述了如何使用期望和线性时间的选择算法求得第i顺序统计量,欢迎拍砖!原创 2014-12-30 16:10:10 · 2831 阅读 · 0 评论 -
【算法导论】插入排序
算法入门之插入排序原创 2014-11-30 11:28:44 · 1699 阅读 · 1 评论 -
【算法导论】选择排序
#include #define MAX_SIZE 10#define MAX_INDEX MAX_SIZE-1typedef int T;using namespace std;void swap(T& a, T& b);void select_sort(T* a, const int& len);void printArr(const T* a, const int& l原创 2014-12-01 21:14:58 · 845 阅读 · 0 评论 -
【算法导论】归并排序
归并排序算法分析,欢迎拍砖!原创 2014-12-02 21:42:55 · 2030 阅读 · 1 评论 -
【算法导论】10.2不带哨兵节点和带哨兵节点的双向链表
带哨兵和不带哨兵的双向链表,欢迎拍砖!原创 2015-01-04 11:44:06 · 3890 阅读 · 1 评论 -
【算法导论】10.1-5单数组实现双端队列
算法导论习题,单数组实现双端队列,欢迎拍砖!原创 2015-01-02 22:47:09 · 2137 阅读 · 0 评论 -
【算法导论】简单哈希表的除法实现
哈希表,又名散列表,hashtable。。。云云,看似很高大上,其实不过是直接寻址的延伸而已。直接寻址为何物,看一个数组:a[10],那么取其中一个元素a[1],这就是直接寻址,直接去这个a+1的地址上,就找到了这个数值,时间复杂度为O(1)。而哈希表的目的就是要让查找的时间复杂度尽量往O(1)上靠。原创 2015-03-18 22:27:18 · 2111 阅读 · 0 评论