
数据结构与算法
UsherYue
进入研发行业10年,曾任职与多家创业公司,负责核心研发工作,团队建设管理工作。
展开
-
C++数据结构与算法------------二叉树的2种创建
1、以数组为存储结构的二叉树 模板+完全二叉树(适合完全二叉树存储)/*二叉树的线性存储 ..用数组 作为存储结构 ,需要对二叉树 按照层次进行编号 。适合完全二叉树和满二叉树。编号就是二叉树数组的值 这里的节点要按照层次 为二叉树的每个节点编号 如果节点编号为i 那么父节点 i/2 子节点 2i 2i+1 我们在这里操作以数组存储的原创 2012-04-30 19:25:01 · 1459 阅读 · 0 评论 -
菜鸟学算法--简单的交换和最大公约数算法入门篇
工作之后我们大部分的时间实在研究如何如何学习一门语言 如何如何掌握一门技术,但是作为编程的本质 数据结构和算法 我们慢慢的忽略了 。工作后的很多程序员真的没有大学生一样的时间 去静下心来去增加自己的底蕴,这是我深有体会的事情当然我这里指的是和我有累死感觉的人。学习是一个过程,从简入繁 一贯如此,记录下来只为 记录自己的点点滴滴。#include "stdafx.h"#include原创 2015-01-31 14:15:36 · 1412 阅读 · 1 评论 -
内嵌汇编与C/C++实现的冒泡排序,快速排序算法排序500W个数据对比
内嵌汇编是微软为了提高程序的优化能力而嵌入在VC中的,这意味着你如果在C/C++程序中使用了 inline asm进行 汇编 那么 就注定无法跨平台的,对于没有汇编基础的同学是需要去学习下 的,因为有些时候C++程序员是不得不懂这些东西的 。内嵌汇编 在C/C++中 通过_asm{ ...}_asm ....引入汇编代码,可以使程序自陷入汇编状态,MMX汇编指令被原创 2014-12-08 18:37:26 · 4081 阅读 · 1 评论 -
简单构建一个二叉树并且产生镜像
简单的面试题,产生一个二叉树并且产生该二叉树的镜像。原二叉树1 2 3镜像后 1 3 2#include using namespace std;typedef struct BinaryTreeNode{ char data ; BinaryTreeNode* left ; BinaryTreeNode* right;}Bin原创 2015-06-30 15:15:12 · 1357 阅读 · 0 评论 -
C++实现一个线程安全的单例工厂
我们见到经常有人用 static 局部对象的方式实现了类似单例模式,最近发现一篇文章明确写明 编译器在处理 static局部变量的时候 并不是线程安全的 !!!http://blogs.msdn.com/b/oldnewthing/archive/2004/03/08/85901.aspx 于是实现了一个单例工厂 并且是线程安全的#ifndef SINGLETONFACTORY_H#原创 2015-11-07 19:56:22 · 2544 阅读 · 0 评论 -
自己实现StrToInt函数
int StrToInt(const char*pStr,int defaultVal){ //空指针访问 if(pStr==0) return defaultVal; int result=1,tem=0 ; //位数 int bitNum=0; //符号 int sign=1 ; const char *pTem原创 2015-11-07 10:18:02 · 2962 阅读 · 0 评论 -
算法有序数组合并---在空间足够的情况下,进行O(n)的合并 并且移动次数最小
最近看一本书上有一个面试题, 原题目是 有两个递增数组 A1 A2, A1的内存空间足够长, 现在要求合并 A2到A1,并且要求移动次数最小 ,面试的时候 我们尽量要以 最高效的方式完成 ,下面是此题 O(n)解法。void ReplaceCharInEnoughMemory(char*pStr){ if(pStr==0) return ; //计算空格原创 2015-11-11 14:57:33 · 1899 阅读 · 0 评论 -
关于有序二维矩阵查找和字符串替换的两道算法题
最近看一本书上写到的两个面试题 于是实现了一下 感觉思路很好,大牛略过 :1、对于一个二维矩阵,从左到右 从上到下 都是递增的,如何判断一个值是否在矩阵内部?(C实现 实现复杂度 O(n))bool FindInTwoDimensionalMatrix(int*pMatrix,int iRows,int iCols,int iFindVal){ bool bFind=false ;原创 2015-11-11 10:45:36 · 1535 阅读 · 0 评论 -
golang实现AES ECB模式的加密和解密
golang实现AES ECB模式的加密和解密原创 2017-06-17 23:29:40 · 15568 阅读 · 3 评论 -
golang 中的md5 、hmac、sha1算法的简单实现
package mainimport ( "crypto/hmac" "crypto/md5" "crypto/sha1" "encoding/hex" "fmt")func Md5(data string) string { md5 := md5.New() md5.Write([]byte(data)) md5Data := md5.Sum([]byte(""))原创 2017-06-20 13:31:07 · 9143 阅读 · 0 评论 -
Lua中table内建排序与C/C++/Java/php/等内排序算法的排序效率比较
Lua这类脚本语言在处理业务逻辑作为配置文件的时候方便省事 但是在大量需要 运算的地方就显得略微不足 按照 Lua内建排序算法 对比C++排序算法测试 Lua解释器的排序算法在LDT下,运行速度比通过C/C++内嵌解释器调用的快4倍之多 而C/C++的快速排序速度又是Lua 内嵌排序算法的速度的10倍之多,起码在我的电脑上 看到的是这样的效果。Lua table默认内建排序算法原创 2014-12-06 23:24:37 · 3872 阅读 · 2 评论 -
VC内嵌汇编基础知识
http://www.cppblog.com/xingkongyun/archive/2008/12/21/70003.html为了加速游戏,一提起汇编语言,大家也许会感到很神秘。其实如果你学起来就会发现,它并非想象中那样难。特别是内嵌汇编,由于它和C++紧密结合, 使你不必考虑很多烦琐的细节(例如输入输出函数的写法),学习起来比较容易。使用内嵌汇编,特别是使用MMX指令,可以大大提高各种游戏翻译 2014-12-07 17:30:28 · 3512 阅读 · 0 评论 -
菜鸟学算法----改进后的欧几里得算法
对于正整数 a和b 利用欧几里得算法可以得出 一个最大公因数 , 改进后的算法满足 最大公因数 q=xa+yb ;那么我们如何求出 a和b呢 。书上是这么写的 那么我们用代码把他实现出来, 向大家推荐一本书《The Art Of Computer.Programmer》 第一篇的数学部分 真心的枯燥 我选择的方式 是 适当的囫囵吞枣 对于这一样 ,但是对于其中讲述的算法原创 2015-01-31 16:25:13 · 1476 阅读 · 0 评论 -
二叉树的创建以及利用迭代实现中序、先序、后序遍历、清空
/*二叉链表就是以链表为存储结构存储二叉树 ,我么要像编号 完全二叉树一样 存储 普通的二叉树 。 节点的声明如下 node */#include using namespace std ;typedef struct node{ int data ; node* lChild ; node* rChild ;}BTreeNode,*LinkTree ; v原创 2012-04-30 23:01:19 · 3769 阅读 · 0 评论 -
java求吸血鬼数字算法 。。。
import java.util.*;public class XiXueGui { public static void main(String []args) throws Exception { ArrayList list=new ArrayList(); //提高效率所引用线性表 ArrayList result=new ArrayList(); //原创 2012-06-02 12:47:23 · 1781 阅读 · 2 评论 -
数据结构-----哈夫曼树的构造以及遍历
/*根据Huffman树的构造原理进行构造 ... 哈夫曼树在编码压缩的领域有很好的应用,利用Huffman进行编码可以保证数据传输的无二义性 。但是要注意的是 对于出现频率大的数据我们应该尽量放在离根节点近的地方进行编码 ,出现频率小的数据我们可以放在距离根节点小的地方。这样可以提高数据的传输效率 。*/#include "stdio.h"#include "malloc.h原创 2012-05-17 01:06:53 · 15612 阅读 · 3 评论 -
二叉搜索树的非递归创建和搜索
#include "stdio.h"typedef struct node{ int data ; node*lChild ; node*rChild ;}TreeNode ;void Insert(TreeNode**root,int data) //向二叉查找树中插入元素 采用非递归思想{ TreeNode * p=*root ;//获得根结点 Tr原创 2012-05-19 00:48:37 · 3558 阅读 · 0 评论 -
二叉搜索树非递归方式删除节点
#include "stdio.h"#include "iostream.h"typedef struct node{ int data ; node*lChild ; node*rChild ;}TreeNode ;void Insert(TreeNode**root,int data) //向二叉查找树中插入元素 采用非递归思想{ TreeNode * p原创 2012-05-20 00:46:04 · 3612 阅读 · 2 评论 -
java中栈的一个小应用..
package me ;import java.util.LinkedList; public class MyStack{ private LinkedList stack=new LinkedList() ; public Character pop(){ return stack.pop() ; } public void push(Character原创 2012-06-21 20:36:28 · 858 阅读 · 0 评论 -
Set实现元音统计小程序
import java.io.FileInputStream;import java.io.InputStream;import java.util.Arrays;import java.util.Collection;import java.util.TreeSet;class WordFinder{ private Collection set=new TreeSet原创 2012-06-22 10:28:29 · 805 阅读 · 0 评论 -
C++数据结构和算法每天一练(线性表)
#include using namespace std; class ArrayLinerTable{public: void InitLinerTable(int); //初始化线性表 void MakeEmpty() ;//清空线性表 int GetLength() ;//获取长度 int Locate(int) ;//获取制定位置的原创 2013-06-21 14:16:42 · 3657 阅读 · 0 评论 -
C++面试题算法
#include #include using namespace std ; /*题目:给一个字符串、例如 “ababc”要求返回“ab”. 因为“ab”连续重复出现且最长。用C/C++语言写一函数完成该算法,给出复杂度这道题的最终目的是找到最长的连续字符串 */struct SubStringInfo{ int maxSubStrLength ;//最长原创 2013-06-28 03:02:06 · 5492 阅读 · 2 评论 -
求链表的倒数第N个节点
最近看一本书上有求链表的倒数第N个节点,简单实现了下 链表,实现方案如下1、不借助链表长度顺序遍历倒数第N个节点 GetReserveN就是如此实现。2、当然如果链表记录了节点长度也可以直接正序遍历出来 第lenth-N个节点就是倒数节点。template class LinkedList{public: operator T(){return m_data;} virtual原创 2015-11-07 10:28:02 · 1879 阅读 · 0 评论