算法
lightjia
这个作者很懒,什么都没留下…
展开
-
直击面试之KMP字符串查找
面试时碰到一个算法题,判断一个字符串是不是一段字符的子串,当时不加思索的就写出两段for循环,伪代码如下#src为源串 pat为子串i=0while(i<len(src) && len(src) >== i + len(pat)){ j=0 while(j<len(pat) && i+j<len(src) &am...原创 2020-01-23 09:56:58 · 172 阅读 · 0 评论 -
GO实现文件压缩算法
实现原理 读取文件,统计字符出现次数为权值,构建哈夫曼树,获取每个字符的哈夫曼编码,写入文件。压缩文件头定义type compressHead struct { srclen, dstlen, keymapLen uint32 //源文件字符个数 压缩文件字符个数 哈夫曼编码字符映射个数 patchBit uint8 //...原创 2020-01-16 12:28:58 · 1537 阅读 · 1 评论 -
哈夫曼树构建
哈夫曼树是带权值的树节点结构,且目标节点都存储在叶子节点上。下面使用Go实现哈夫曼树哈弗曼树构建过程将带权值的节点进行排序,形成有序的链表。 取出链表头两个节点,权值相加形成新节点,并加入上述链表中重新排序,两节点分别为构建为左右子树,新创建的节点为父节点。 重复步骤2直到链表节点为1退出构造哈夫曼节点定义type huffmannode struct { value in...原创 2020-01-14 21:20:26 · 682 阅读 · 0 评论 -
直击面试之链表
面试过程中经常会遇到链表相关面试,链表相较于数组区别是节点存储空间不连续,可持续扩展。下面是使用Go进行链表实现。链表结构定义//define the data structtype LinkList struct { pPrev *LinkList //Previous node pointer pNext *LinkList //Next node pointer Value...原创 2020-01-14 15:56:59 · 226 阅读 · 0 评论 -
直击面试之二叉树
面试过程中经常会问到二叉树相关的问题,下面使用Go整理下二叉树相关问题的代码实现树的定义//define the data structtype BinaryTree struct { pLeft *BinaryTree //The Left Branch pRight *BinaryTree //The Right Branch value interface{} //Sto...原创 2020-01-13 14:16:49 · 228 阅读 · 0 评论 -
欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl转载 2017-11-13 20:23:51 · 147 阅读 · 0 评论 -
常见七种排序算法
转载自 http://www.iteye.com/news/32725?utm_source=tuicool&utm_medium=referral选择排序 实现原理首先从未排序序列中找到最小的元素,放置到排序序列的起始位置,然后从剩余的未排序序列中继续寻找最小元素,放置到已排序序列的末尾。所以称之为选择排序。代码实现public static int[] selectio转载 2017-11-01 14:54:52 · 246 阅读 · 0 评论 -
堆排序
直接上代码#include #include #include #include #define MAXRANDOM 10000 //产生最大随机数#define LINESHOWNUM 18 //每行显示的数目void swap(int* pA, int *pB){ if(NULL == pA || NULL == pB) { retur原创 2016-08-15 11:49:01 · 269 阅读 · 0 评论 -
快速排序
直接贴代码了#include #include #include #include #define MAXRANDOM 1000 //产生最大随机数#define LINESHOWNUM 8 //每行显示的数目void swap(int* pA, int *pB){ if(NULL == pA || NULL == pB) { retur原创 2016-08-10 16:40:57 · 221 阅读 · 0 评论 -
字符串中去掉空格
在面试或者工作中,我们需要对字符串进行操作,现在记录下删除字符串中空格的思路。void DelBlank(char* pSrc){ if(NULL == pSrc) { return; } char* pTmp = pSrc; char* pDes = pSrc; while(*pTmp != '\0') { if(*pTmp != ' ') { *pDes原创 2016-05-04 15:30:41 · 346 阅读 · 0 评论 -
排序算法之直接插入排序
通俗思路是:一堆高矮不一的人排队,首先第一个人作为参照,第二个人与这个人比较,若第二个人比第一个人高则第一个人位置后移,第二个人站到第一个人的位置,然后第三个人与第二个人比较。。。直接贴代码:// Algorithm.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include using原创 2016-02-28 16:40:32 · 306 阅读 · 0 评论 -
排序之冒泡排序
在几大排序算法中,冒泡排序是最简单容易实现的。冒泡排序算法的运作如下:从0~N-1比较相邻的元素。如果第一个比第二个大,就交换他们两个。一轮比较后,最大的元素就到了N-1的位置了。N自减后重复步骤一通俗的讲就是每一次冒泡就是将最大的元素移到最后面去直接贴代码:// Algorithm.cpp : 定义控制台应用程序的入口点。//#in原创 2016-02-27 17:05:06 · 273 阅读 · 0 评论