自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ben的专栏

我是ben,不要叫我帅哥!

  • 博客(27)
  • 资源 (1)
  • 收藏
  • 关注

转载 mysql 忽略主键冲突、避免重复插入的几种方式

方案一:使用 ignore 关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: insert ignore into table_name(email,phone,user_id) values('test9@163.com','99999','9999'),这样当有重复记 录就会忽略,执行后返回数字0,还有个应用就是复制表

2014-05-12 17:43:10 806

转载 Redhat下 Boost库1.54编译安装

a. 在 www.boost.org 下载 boost1.54 源码包,解压缩。 b. 进入目录后,运行 ./bootstrap.sh ,会生成一个 bjam 的可执行程序。 c. 运行 ./bjam 进行编译。等待... d. 编译成功后,在 bjam 同级文件夹下,会有 stage、bin.v2 两个目录。bin.v2 中存的是编译时生成的目标文件,stage 中放的是 bo

2014-04-04 14:35:04 1071

原创 Linux下安装使用mysql connector/C++

(1)使用C++版本的mysql connector首先需要安装和编译boost库。    可以在boost官网上下载源文件,自己进行编译。也可以直接使用命令下载和编译,具体命令为:    apt-get install libboost-dev libboost-dbg libboost-doc bcp libboost-* (2)然后需要下载mysql connector的头文件

2014-04-04 14:33:57 1750

原创 关于归并排序运行时间的证明

《算法导论》第三版第二章利用了插入排序和归并排序学习了关于程序的运行时间! 我利用课后证明题来演示,如何利用数学归纳法证明归并排序的程序运行时间! 原题如下: 使用数学归纳法证明:当n刚好是2的幂时,以下递归式的解是T(n)= nlgn。 当n = 2 时, T(n)= 2; 当n = 2^k,k>1时,T(n) = 2T(n/2) + 2;

2014-03-19 23:13:50 2380

原创 借鉴一下别人写的归并排序

归并排序是利用了分治算法的一种排序! 分解: 分解待排序的n个元素的序列为两个n/2个元素的子序列; 解决:使用归并排序递归排序两个子序列; 合并:合并两个已排序的子序列排序完毕。 归并排序的时间复杂度是O(nlgn); 虽然我自己可以很轻松的写出归并排序,但我还是引用了别人写的代码,这是清华大学计算机系的将《算法导论》中2.3章节的归并排序由伪代码用c语言实现的。

2014-03-19 00:12:44 1211

原创 非递归前序遍历(非递归、非栈)

前几天面试吃了一次瘪,笔试题让我非递归前序遍历,我毫不犹豫的就写了一个栈。然后利用压栈将前驱遍历迅速写了出来,当时喜滋滋的寻思今天的又比较顺利哈! 面试的时候,考官问我,能不能不用栈,不递归实现呢?我顿时呆了... ... 从来都没有思考过这个问题!直接影响了我后面的答题! 回来后翻阅资料,其实一颗线索二叉树很easy的解决了这个问题!这也说明了我对数据结构知识理解的不够深刻,没办法把实际

2014-03-17 14:50:27 1409

转载 TCP和UDP的区别

TCP和UDP都是传输层的协议,他们的区别主要如下: 1、TCP,全名“传输控制协议”,是面向连接的,也就是说在发送方和接收方在发送数据之前,必须通过三次握手建立连接,相当于现实生活中的打电话功能,必须先拨号,接通后才能说话,UDP,全名“用户数据报协议”,是无连接的,其中一方向向另一方发送数据时不需要建立连接,直接发送,相当于现实中的发短信   2、TCP是可靠的传

2014-02-27 10:19:45 750

原创 平衡二叉树(AVL)结点删除操作

结点的删除向来是二叉树的操作中的难点,平衡二叉树中结点删除相对更是复杂,由于删除结点操作以后还要保持其平衡的特征, 所以给我们删除的操作带来了一些小麻烦! 之前的文章我写过一个关于AVL树的结点插入的操作,当时我在二叉树结点的定义中加入了一个height的参数,这个参数表示以该 结点为根的子树的深度。在本文中我将这个参数删掉,利用一个方法Depth(),来求该结点的深度!如果读者有兴趣,

2014-02-24 14:48:17 5431 1

原创 排序之希尔排序

希尔排序算法是插入排序到二分插入排序后又一个进阶的算法。 它通过比较相近一定间隔的元素来共组,各趟比较所用的距离随着算法的进行而缩小,直到之比较相邻蒜素的最后一趟时结束。 所以希尔排序也叫做缩小增量排序算法。   首先,希尔排序利用了一个增量序列,这个序列是一个递减的序列!如何设置这个序列根据待排序的序列的容量大小而定。 所以希尔排序算法的效率和这个增量序列的质量有关系! 这里假设这个

2014-02-01 23:50:28 1100

原创 排序之二分插入排序

作为一个稳定的排序算法, 插入排序很重要,大多数程序员都可以很轻松的写出插入排序! 先看一下插入排序的代码: void sort_insert(int a[],int n) { int i,j; i=1; while(i<n) { int x = a[i]; j=i-1; while(j>=0 && a[j]>x) { a[j+1]=a[j];

2014-01-31 21:44:38 4595

原创 几种统计整数二进制表示中1的个数(算法小学习)

这是一个很有意思的问题,是在面试中特别容易被问到的问题之一,这个问题有一个正式的名字叫 Hamming weight。 解决这个问题第一想法肯定是一位一位的去判断,是1计数器+1,否则不操作,跳到下一位,十分容易,编程初学者就可以做得到! 于是很容易得到这样的程序: int Sum1ByBin(int num) { int sum = 0; while (num) {

2014-01-26 15:23:30 1261

原创 三个单链表交集(O(m+n+p))

题目: 已知三个带头结点的线性链表A、B和C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点)。 编写算法对A表进行如下操作: 使操作后的链表A中仅留下三个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为O(m+n+p),其中m、n和p分别为三个表的长度。 看代码:由于我将方法都封装到了类里面,所以第一个链表的头结点就在类

2014-01-22 23:38:14 3017

原创 单链表的定义和基本操作

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)访问特定编号的节点则需要O(n)的时间,而顺序表相应的时间复杂度分别是O(logn)和O⑴。 使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。 但是链表失去了数组随机读取

2014-01-21 23:48:23 7428

原创 实现一个比较高级的字符匹配算法,即一串很长的字符,要求找到符合要求字符的字符串

今天开始我偶尔也写一点面试题

2014-01-18 01:30:42 2739

原创 AVL树的定义和基本操作

AVL树是带有平衡的二叉查找树!一颗AVL树的每一个结点的左子树和右子树的深度最多只有1的差距,这就保持了这颗二叉树的平衡!很大程度的提高了树的使用效率! 当我们对树进行一系列操作(插入、删除等)后,AVL树很可能就不能保持AVL的特性,所以在进行操作时,我们必须重新平衡这颗二叉树! 我们把必须重新平衡的结点叫做α(这样可以减少很多文字,又好理解),由于任意结点最多只有两个儿子,因此出现高度不

2014-01-15 23:35:43 3059

原创 二叉查找树的定义以及几个基本操作

二叉查找树是一种特殊的二叉树,一般数据域都是数值类型的元素,原因是二叉查找树基本性质决定了,在二叉查找树中的任意结点,其数据域的数值一定大于它的左子树的所有结点,也小于它的右子树的所有结点!!!所以,是可以比较的数据域才是二叉查找树的存在意义! 这里我写了几个二叉查找树的方法,前几个比较简单,唯一有点难度的是删除结点的操作! 如果待删除的结点是叶子结点,非常好办,删之即可!

2014-01-13 02:51:25 2070

原创 生成一颗表达式树

关于表达是计算在有关栈的文章里写的十分详细了,学到树时!发现表达式计算也是基本树学习的基础知识所以也认认真真的写完了! 这里还是需要栈的只是帮助我将我们人类惯用的表达式转换成后缀表达式。再利用后缀表达式转换为树的形式。 有关思路: 1、先将输入的中缀表达式转换为后缀表达式,存入一个字符数组中。 2、对后缀表达式进行操作: 1)遇到数字,用它生成一颗单结点的树,并压栈; 2)

2014-01-12 23:42:02 2851

原创 树的基本操作

今天这一章概述树的基本操作,边写边调试边更新!!! #include #include typedef char ElemType; /*树的结点结构*/ typedef struct BiTNode { ElemType data; struct BiTNode * lchild; struct BiTNode * rchild; }BiTNode,* BiTree;

2014-01-11 21:53:11 769

原创 模式匹配算法之brute force

终于学完串这个章节,这就利用两篇文章来谈一谈学习的心得! 串的应用是比较贴近生活的,最常用的例子就是用搜索引擎的时候,我们输入一个“帅哥,它就会帮我们做了模式匹配的工作,如图: 功能如此强大,还贴近生活,还解决问题,所以串这种数据结构一定要掌握清楚! 首先是,阐述一下串的几个概念: 1、串:(string)是由零个或多个字符组成的有限序列,又名字符串;

2014-01-10 00:01:18 1270

原创 利用递归求八皇后问题

八皇后问题是学习数据结构里很经典的一个问题,在8*8的棋盘里,摆放8个皇后,使其两两之间不会形成威胁! 计算目的: 1、遍历并输出每一种结果; 2、求得有多少种解法。 利用回溯算法计算把皇后问题是比较简单的! 我利用递归,就是为了求解!就是为了更深刻的了解递归! 进入代码,我会将代码做详细的注释,方便需要的同学去学习: 由main开始: #includ

2014-01-03 02:46:31 1316

原创 汉诺塔问题

汉诺塔问题在编程这个领域内可以算是一个老掉牙的问题了,但是它是一个很好的学习例子,作为以为编程的菜鸟,我也必须要搞定它才是! 据传说,当64层汉诺塔从a塔挪到c塔时,那将是世界末日!!!关于汉诺塔的玩法不会的去找度娘! 言归正传,回归问题。     递归,当然要用递归!递归是把最复杂的问题转换成最简单的情况,汉诺塔游戏中什么是最简单的情况?当然是塔层只有1的情况了?所以递归的终止

2013-12-31 02:37:18 1125

原创 关于Cocos2d-X 学习中遇到的一些难以理解的东西 将来将会一一删除

在触摸事件中,需要获得触点的地址,需要转换为openGL的坐标: CCPoint endPoint = CCDirector::sharedDirector()->convertToGL(pTouch->getLocationInView()); 触摸事件中,如果是单点触摸,在registerWithTouchDispatcher()中,调用: CCDirector::sharedD

2013-12-30 00:27:02 692

原创 终极的表达式求值

之前的两篇文章将表达式求值做了个分解动作。 1、将中缀表达式转换为后缀表达式(逆波兰表达式)。 2、利用逆波兰表达式求出最终的结果。 表达式求值历来有几个比较难搞的问题: 1、带括号的优先级问题(转换为逆波兰表达式完美解决此问题)。 2、大于10的数字做表达式计算。 3、带小数点的问题。 将中缀表达式转换为后缀表达式后,括号问题就已经迎刃而解。2、3两个问题利用点小技

2013-12-29 22:09:10 751

原创 表达式求值(中缀表达式转换为后缀表达式)

上一篇文章是后缀表达式求值,由于后缀表达式不是我们人类能接受的求值表达式,so本文为中缀表达式转换为后缀表达式的方法。然后再结合上一篇逆波兰表达式,我们就可以利用中缀表达式求值啦!!!!本文的代码依然可以计算带小数点,大于10的数字的表达式!写到这里突然想起来,没有考虑负数问题!那么这个内容就交给读者朋友吧!由于本人也是菜鸟,所以里面有两问题解决的能闹心的,代码中有详细的注释。

2013-12-28 16:45:37 1063

原创 表达数求值(逆波兰表达式)

学到这里是我学编程以来最欢乐的一个内容,因为每次看到有关逆波兰表达式的内容都会看到一句至理名言——“想要出名,不但要有牛逼的成就,名字还要起的朗朗上口!”。哈哈,可怜的Jan Lukasiewicz,是不是应该念做简.卢卡斯维克斯?管他妈的! 逆波兰表达式不懂的去度娘之! 上代码: #include #include #include #include #

2013-12-28 15:31:10 917

原创 进制转换

/所用的栈模板请参阅《顺序栈模板》 一、十进制转二进制: ElemType c; SqStack s; int len,i,sum=0; InitStack(&s); printf("请输入二进制数,输入#符号表示结束!\n"); scanf("%c",&c); while (c!='#') { Push(&s,c); scanf("%c",&c);

2013-12-28 15:27:43 787

原创 顺序栈模板

为了自己学习,每天都要更一点数据结构知识,嘿嘿! 之后的知识都用这种模板来完成,所以。。。 #include#include #include #define STACK_INIT_SIZE 20#define STACKINCREMENT 10typedef char ElemType;typedef struct{ ElemType * base; Ele

2013-12-28 15:25:48 617

AVL树的定义以及基本操作(完美版)

是二叉树的基本操作 avlTree MakeEmpty(avlTree T); avlTree Find(avlTree T,ElemType e); avlTree FindMin(avlTree T); avlTree FindMax(avlTree T); avlTree Insert(avlTree T,ElemType e); avlTree Delete(avlTree T,ElemType e); int Depth(avlTree T); //ElemType Retrieve(avlTree p); /**************************************/ void preOrderTraverse(avlTree T); void inOrderTraverse(avlTree T); void postOrderTraverse(avlTree T); void levelOrderTraverse(avlTree T);

2014-02-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除