算法导论
文章平均质量分 93
对《算法导论》中的算法进行讲解和实现
祁峰
北京竹鱼互联科技有限公司创始人
展开
-
算法导论 之 贪心算法- 矩阵链相乘
算法导论 之 动态规划 - 矩阵链相乘原创 2014-05-08 11:10:53 · 3557 阅读 · 6 评论 -
算法导论 之 B树 - 删除[C语言]
作者:邹祁峰邮箱:Qifeng.zou.job@hotmail.com博客:http://blog.csdn.net/qifengzou日期:2014.04.13转载请注明来自"祁峰"的CSDN博客1. 引言 关于B的性质、结构定义、插入操作的处理和相关代码可以参考《算法导论 之 B树 - 创建、插入》一文,而本文主要是讲解B树删除操作的处理过程。在B树的插入操作原创 2014-04-13 08:36:53 · 7729 阅读 · 10 评论 -
算法导论 之 B树(B-树) - 创建、插入[C语言]
在计算机科学中,B树在查找、访问、插入、删除操作上时间复杂度为O(log2~n)(2为底数 n为对数),不像自平衡二叉查找树,其可以有效的优化系统对大块的数据读写的性能,其通常在数据库和文件系统中被使用。原创 2014-03-13 18:28:41 · 17604 阅读 · 3 评论 -
算法导论 之 动态规划 - 装配线调度问题[C语言]
动态规划 - 装配线问题:现有两条装配线,Sij表示第i条上完成第j道工序的装配站。汽车完成组装需要依次完成1~n工序。请找出完成装配并离开装配线的最快路线原创 2014-03-07 18:05:13 · 3159 阅读 · 0 评论 -
算法导论 之 红黑树 - 打印、销毁 - 非递归[C语言]
1.引言 之前写了一篇《算法导论 之 平衡二叉树 - 打印》的博文,其中的实现使用的是递归方式,仿照此博文中的代码,可以快速实现红黑树的递归打印。虽然递归方式比较简单明了,但和栈算法比起来,其效率较低。为了提高对红黑树的处理效率,在此使用递归的方式实现红黑树的处理。对于该篇中出现的相关的类型和函数,可以在博文《算法导论 之 红黑树 - 插入》和《通用栈的设计和实现》中找到定义和实现。原创 2013-12-27 17:24:04 · 3375 阅读 · 2 评论 -
算法导论 之 红黑树 - 删除[C语言]
作者:邹祁峰 邮箱:Qifeng.zou.job@hotmail.com 博客:http://blog.csdn.net/qifengzou 日期:2014.01.18 01:21 转载请注明来自"祁峰"的CSDN博客1 引言 在《算法导论 之 红黑树 - 插入》中已经对红黑树的5个性质做了较详细的分析,同时也给出了insert操作的C语言实现。首先我们...原创 2014-01-18 01:28:46 · 4457 阅读 · 9 评论 -
算法导论 之 红黑树 - 添加[C语言]
作者:邹祁峰 邮箱:Qifeng.zou.job@hotmail.com 博客:http://blog.csdn.net/qifengzou 日期:2013.12.24 21:00 转载请注明来自"祁峰"的CSDN博客1 引言 在之前的博文中,本人对平衡二叉树的处理做了较详尽的分析,有兴趣的朋友可以参阅博文《算法导论 之 平衡二叉树 - 创建 插入 搜索...原创 2019-10-23 14:22:00 · 4663 阅读 · 0 评论 -
算法导论 之 平衡二叉树 - 删除 - 递归[C语言]
平衡二叉树 删除操作 C语言实现原创 2013-12-20 12:19:27 · 6728 阅读 · 0 评论 -
算法导论 之 平衡二叉树 - 打印 - 递归[C语言]
在之前的博文《算法导论 之 平衡二叉树 - 插入、查询、销毁》中已经给出了构建平衡二叉树的C语言实现过程,但随着节点的增加和树结构的不断旋转调整,且插入、查找、删除的过程中可能存在一些异常情况,经过一段时间后,我可能很难知道当前平衡二叉树的具体结构,因此,增加打印平衡二叉树当前结构的函数十分必要。原创 2013-12-17 11:52:23 · 3025 阅读 · 0 评论 -
算法导论 之 平衡二叉树 - 创建、插入、查询、销毁 - 递归[C语言]
平衡二叉树 C语言实现 创建 插入 查找 销毁原创 2013-12-13 16:49:18 · 6752 阅读 · 2 评论 -
算法导论 之 快速排序[C语言]
一、算法实现快速排序的时间复杂度为O(n^2),但其通常是用于排序的最佳的使用选择,这是因为其平均性能相当好:期望的运行时间为O(nlgn)。其实现的算法如下:int quick_sort(int *array, int min, int max){ int idx = 0; if(min < max) { idx = partition(array, min, max);原创 2013-01-09 18:47:32 · 1464 阅读 · 0 评论 -
算法导论 之 希尔排序[C语言]
一、优缺点希尔排序的时间复杂度与其增量序列有关,这涉及到数学上尚未解决的难题。迄今为止,还没有人找到最好的增量序列。其时间复杂度为O(n^s){s, 1二、算法实现其代码实现如下:int shell_sort(int *array, int max){ int d = 0; d = max>>1; while(d > 0) { shell_inse原创 2013-01-08 10:14:24 · 1708 阅读 · 0 评论 -
算法导论 之 堆排序[C语言]
一、算法实现堆排序算法的时间复杂度为O(nlgn),其算法实现如下:void heap_sort(int *array, int max){ int idx = 0; build_max_heap(array, max); for(idx=max; idx>=2; idx--) { array[0] = array[1]; array[1] =原创 2013-01-04 22:03:29 · 1676 阅读 · 0 评论 -
算法导论 之 归并排序[C语言]
一、算法实现归并排序的时间复杂度为O(nlgn),其代码实现如下:int merge_sort(int *array, int min, int max){ int mid = (min+max)/2; if(max <= min) return 0; merge_sort(array, min, mid); merge_sort(array, mid+1,原创 2013-01-01 12:47:08 · 2333 阅读 · 0 评论 -
算法导论 之 冒泡排序[C语言]
一、算法实现冒泡排序的时间复杂度为O(n^2),其实现代码如下:int bubble_sort(int *array, int num){ int i=0, j=0, idx=0, max=0; for(idx=1; idx<num; idx++) { array[0] = array[1]; /* array[0]为交换空间 */ max = num-原创 2013-01-01 09:28:09 · 1793 阅读 · 0 评论 -
算法导论 之 插入排序[C语言]
一、算法实现插入排序的时间复杂度为O(n^2),其实现算法如下:int insert_sort(int *array, int num){ int i=0, j=0; for(j=2; j<num-1; j++) { i = j-1; array[0] = array[j]; /* array[0]为哨兵 */ while(array[i] < a原创 2013-01-01 01:50:30 · 2080 阅读 · 0 评论