算法导论
文章平均质量分 87
大体依据算法导论(第三版),学习并阐述常见的算法和数据结构以及书本习题,面向面试和工作
苦_咖啡
这个作者很懒,什么都没留下…
展开
-
【算法导论】简单哈希表的除法实现
哈希表,又名散列表,hashtable。。。云云,看似很高大上,其实不过是直接寻址的延伸而已。直接寻址为何物,看一个数组:a[10],那么取其中一个元素a[1],这就是直接寻址,直接去这个a+1的地址上,就找到了这个数值,时间复杂度为O(1)。而哈希表的目的就是要让查找的时间复杂度尽量往O(1)上靠。原创 2015-03-18 22:27:18 · 2135 阅读 · 0 评论 -
【算法导论】贪心算法之赫夫曼编码
概述 讨论赫夫曼编码问题,赫夫曼编码的思想就是变长编码。变长编码就是让字符表中出现概率高的字符的编码长度尽可能小,而出现概率高的字符的编码长度相对较长。然后还要遵循前缀码的要求,就是任意一个编码都不是其他编码的前缀码,这样方便解码。 对于原创 2015-02-01 16:31:02 · 2345 阅读 · 0 评论 -
【算法导论】0-1背包问题
0-1背包问题描述:已知:小偷在店里偷东西,小偷只带了一个最大承重为W的背包,商店里有N件商品,第i件商品的重量是weight[i],价钱是value[i]。限制:每种商品只有一件,可以选择拿或者不拿,不能分割,不能只拿一件商品的一部分(所以叫做0-1,0即不拿,1则整个拿走,且一种商品有且只有一件可供拿走)问题:在不超过背包最大承重的情况下,最多能拿走多少钱的商品原创 2015-01-30 21:36:58 · 2018 阅读 · 0 评论 -
【算法导论】用动态规划解活动选择问题
上一篇讲了贪心算法来解活动选择问题(【算法导论】贪心算法之活动选择问题),发现后面有一道练习16.1-1是要用动态规划来解活动选择问题。其实跟之前的矩阵链乘法有些相似,也是考虑分割的活动是哪一个,并用二维数据来记录Sij---最大兼容集合个数,和用另一个二维数据来记录Sij取得最大时的活动分割点k。然后就是考虑边界问题,和使用递归来求动态规划的最优解。#i原创 2015-01-28 22:19:11 · 3212 阅读 · 0 评论 -
【算法导论】贪心算法之活动选择问题
贪心算法解决活动选择问题原创 2015-01-27 20:43:22 · 18152 阅读 · 0 评论 -
【算法导论】同时求数组的最大值和最小值
算法导论(第三版)第九章里提出过一个比较有意思的小问题:如何在最短的时间内求出一个n长数组中最大和最小问题。下面就来做一个实现。 思路: ①把数组分成两个两个一组,然后先让子数组内部比较出一个大的和一个小的,然后最大值只跟子数组内的大值做比较,小值只跟子数组内的最小值做比较,如果发现符合的,则重新赋值。 ②对于偶数的数组原创 2015-01-26 10:05:00 · 2913 阅读 · 0 评论 -
【算法导论】动态规划之“最优二叉搜索树”
详解动态规划之“最优二叉搜索树”原创 2015-01-24 16:11:09 · 10088 阅读 · 3 评论 -
【算法导论】动态规划之“矩阵链乘法”问题
动态规划-“矩阵链乘法”问题原创 2015-01-21 15:12:09 · 18093 阅读 · 4 评论 -
【算法导论】动态规划之“钢管切割”问题
动态规划,其实跟分治法有些相似,基本思想都是将复杂的问题分成数个简单的子问题,然后再去解决。它们的区别在于,分治法关注的子问题不相互“重叠”,而动态规划关注的子问题,多是相互“重叠”的。原创 2015-01-18 10:34:59 · 12606 阅读 · 6 评论 -
【算法导论】红黑树详解之一(插入)
红黑树是建立在二叉查找树的基础之上的,关于二叉查找树可以参看【算法导论】二叉搜索树的插入和删除和【算法导论】二叉树的前中后序非递归遍历实现。对于高度为h的二叉查找树而言,它的SEARCH、INSERT、DELETE、MINIMUM、MAXIMUM等操作的时间复杂度均为O(h)。所以在二叉查找树的高度较高时,上述操作会比较费时,而红黑树就可以解决这种问题。原创 2015-01-14 11:11:47 · 15997 阅读 · 8 评论 -
【算法导论】二叉搜索树的插入和删除
阐述二叉搜索树的插入和删除节点操作。原创 2015-01-11 11:47:20 · 3233 阅读 · 0 评论 -
【算法导论】二叉树的前中后序非递归遍历实现
二叉树的非递归遍历原创 2015-01-08 20:47:47 · 3962 阅读 · 1 评论 -
【算法导论】十一章散列表11.1-4大数组实现直接寻址方式的字典操作
算法导论第三版,第十一章散列表 习题11.1-4 大数组实现直接寻址方式的字典操作。原创 2015-01-05 16:33:54 · 1232 阅读 · 0 评论 -
【算法导论】10.2不带哨兵节点和带哨兵节点的双向链表
带哨兵和不带哨兵的双向链表,欢迎拍砖!原创 2015-01-04 11:44:06 · 3910 阅读 · 1 评论 -
【算法导论】10.1-5单数组实现双端队列
算法导论习题,单数组实现双端队列,欢迎拍砖!原创 2015-01-02 22:47:09 · 2150 阅读 · 0 评论 -
【算法导论】中位数和顺序统计量之选择算法
本文阐述了如何使用期望和线性时间的选择算法求得第i顺序统计量,欢迎拍砖!原创 2014-12-30 16:10:10 · 2868 阅读 · 0 评论 -
【算法导论】线性时间排序之 决策树&计数排序
本文讲述的决策树和计数排序的基本原理和实现方法,欢迎拍砖!原创 2014-12-24 15:23:38 · 2332 阅读 · 0 评论 -
【算法导论】堆排序
算法基础之堆排序,欢迎拍砖!原创 2014-12-16 10:11:01 · 1476 阅读 · 0 评论 -
【算法导论】归并排序
归并排序算法分析,欢迎拍砖!原创 2014-12-02 21:42:55 · 2047 阅读 · 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 · 856 阅读 · 0 评论 -
【算法导论】插入排序
算法入门之插入排序原创 2014-11-30 11:28:44 · 1709 阅读 · 1 评论 -
【算法导论】快速排序
搞这一行还是始终绕不过数据结构算法这一个坎,自己不是科班出身,还是脚踏实地一步一步的开始学原创 2014-11-19 21:29:00 · 1200 阅读 · 1 评论