![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 75
_YoungRay
本人酷爱算法,编程语言是C/C++,希望能通过CSDN遇到志同道合的人
展开
-
算法源码之哈弗曼编码
本文没有论述哈弗曼编码的原理、过程。只是将其实现过程现于纸上,为更多朋友在紧急的时候提供方便。忘广大朋友提出批评与指正,后续将不断撰写常用的算法源码#include#include#define MAXVALUE 10typedef struct HTNode{ float weight; //结点权重 int parent; //当前结点的父节点 in原创 2012-08-03 18:01:25 · 546 阅读 · 0 评论 -
算法源码之哈弗曼编、译码
学习有三种境界1.理解了2.比较了3.思考了很多时候我们都只是停留在第一阶段,光理解了,还不够,无法给我们留下深刻的印象。本文实现了对26个小写英文字母在日常生活中出现的次数构(权重)造哈夫曼树,并根据输入的英文进行编译码 #include#include#include#define MAX 5000typedef char *HuffmanCo原创 2012-08-04 12:41:09 · 1211 阅读 · 1 评论 -
算法源码之单链表逆置
记得2012年笔试阿里云的时候,其中就有这么一题,是个填空题,这个问题比较绕,必须一步一图一代码的理解与思考。 其关键代码如下:void ReverseList(Node *L){ Node *p,*q; p=L->next; L->next=NULL; while(p!=NULL){ q=p->next; p->next=L->next;原创 2012-08-04 16:29:28 · 788 阅读 · 0 评论 -
算法源码之非递归创建/遍历二叉树
递归创建二叉树很简单,主要使用系统提供的栈,效率不是很高。将隐式栈转换为显示栈,就归结为非递归形式了。 在前序、中序、后序非递归创建二叉树中,后序创建稍微绕了一点。 同样,本文没有分析其原理、以及算法的时间、空间复杂度,这些东西在设计算法的时候要考虑, 将其现于纸上,繁琐。#include#include#define SIZE 8typ原创 2012-08-04 13:19:17 · 1654 阅读 · 0 评论 -
算法源码之递归与分治策略(2)
本文接着上上一篇继续。【问题 1】整数划分问题描述:将正整数n划分成一系列正整数之和:n=n1+n2+....nk 其中n1>=n2>=...nk>=1,k>=1. 现在要求n的不同的划分个数。 问题可能还很迷糊,举个简单的例子: 4 有如下划分:原创 2012-08-06 13:05:44 · 482 阅读 · 0 评论 -
算法源码之递归与分治策略(1)
分治法的总体思想是: 划分:将一个大的、难以直接解决的问题划分成k个规模较小的、相同的子问题。 如果这k个子问题的规模还不够小,则再划分成k个子问题, 直到问题的规模足够小,很容易直接求出其解为止 求解:对这K个子问题分别求解 合并:将求出的小规模问题的解合并成一个更大规模问题的解,自底向上的逐步求出原问题的解。递归,学过数据结构原创 2012-08-06 11:07:38 · 581 阅读 · 0 评论 -
递归与分治策略(3)
有几天没写东西了,下面开始进入分治算法能使用分治算法解决的问题一般具有如下几个方面的特征:1.该问题缩小到一定的程度就能很容易的解决2.该问题可以划分成与原问题具有相同类型的子问题3.利用子问题得出的解可以合并成原问题的解4.所划分的子问题之间是相互独立的,涉及包含公共子问题的问题, 通常使用动态规划算法,后续将给出。基本框架:Divide_and_conquer(原创 2012-08-13 11:22:43 · 763 阅读 · 0 评论 -
在不使用*、/、+、-、%操作符的情况下,如何求一个数的1/3
导读:算法一直是程序员进阶的一道龙门,通常算法都是为了更高效地解决问题而创造的,但也有的只是出于学术性,并不在意其实际意义。这是近日在国外技术问答网站stackoverflow的一个热门问题,不知道你能给出几种解决方法?问:在不使用*、/、+、-、%操作符的情况下,如何求一个数的1/3?(用C语言实现)第一种方法:使用位操作符并实现“+”操作// 替换加法运算符 int add(int转载 2012-08-13 17:07:55 · 640 阅读 · 0 评论