自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 八皇后

 问题:八皇后,水平线、垂直线、对角线位置上不能有能够见面的皇后 分析:使用回溯法,递归处理。实际上,用排列组合的思想也行,但是需要更多的检查。 代码:参考 Slyar 的实现,做了一小些整理;谢谢1)框架和主函数: // EightQueen.cpp : Defines the entry point for the console appli

2008-11-27 12:32:00 2944

原创 字符串匹配的KMP算法实现

问题源自数据结构书。  问题:字符串src中含有模式串pat的个数举例:src= 00000111111111101010111010101001pat=110src中含有多少个pat? 分析:没有回溯的KMP算法。1)首先实现一个next[]数字,其中的值,是匹配失误之后的下一次匹配的位置。next[0]=-1; next[1]=0;后面的多数都不是0。这个实

2008-11-25 13:25:00 807

原创 排序学习笔记(5) - 内部排序小总结

 把殷版的《数据结构》内部排序部分大致看了一遍,还是感觉到了收获。由于对基数排序(不是一个路数)和归并排序(额外n的存储空间,很致命)并不是很感兴趣,所以就没学习这两个部分。另外,外部排序还没开始,下一步即将开始。 大体的感想是:1,排序的思想和代码实现都有谱了。以前,一说到qsort,要写代码,难受死了,非常费劲,但这次看完之后感觉非常明白,甚至能够把代码背下来。想面我的,不怕了。

2008-11-20 14:00:00 776

原创 排序学习笔记(4) - 快速排序的非递归实现

 quick sort的问题,前面说过了:1,少量数据的排序效果不好,还不如直接插入;2,对于特殊数据的处理,比如单边递增的有序序列,会出现极端差的情况;3,数据量大的话,会让栈溢出。 所以,有了一些性能提高方案,前面说过:1,少量数据时候用直接插入;2,选取pivot用三者的中值;3,去掉递归,使用栈,或者用数组来仿栈void qort_no_re

2008-11-20 10:07:00 1067 1

原创 排序学习笔记(3) - 交换排序,堆排序

  学习排序,参考代码、测试程序:http://tech.ddvip.com/2006-12/116513859112852.html表示一下感谢~~  交换排序。不稳定排序,性能:O(n*lg(n));1)直接选择排序,一个值和所有的其他值比较;比较N次2)锦标赛排序,没看,据说额外存储空间太大;3)堆排序原理:联想到最大堆的建立,建立之后最大值就出现了,这个时间是O(n

2008-11-19 18:23:00 743

原创 排序学习笔记(2) - 快速排序

  学习排序,参考代码、测试程序:http://tech.ddvip.com/2006-12/116513859112852.html表示一下感谢~~ 交换排序。包括冒泡排序和快速排序,一般说来冒泡是不能给别人说的:怕丢脸,呵呵。所以我们就默认交换排序==快速排序。1. 思想a)它采用的是分而治之的策略(divide and conque)。基本思想是:任取待排序列的某个记录(这句

2008-11-19 15:25:00 929

原创 排序学习笔记(1) - 插入排序

 学习排序,参考代码、测试程序:http://tech.ddvip.com/2006-12/116513859112852.html表示一下感谢~~1. 插入排序:1)直接插入排序稳定排序,性能:O(n^2);2)二分查找插入(折半插入排序)这个算法也是非常被大众使用的,折半、二分已经深入人心了。不过它的数据后移却给这个算法拖了后腿。不过没关系,我们能够从中得到解决问题的思想:折半!稳定排

2008-11-19 15:22:00 652

原创 三个数字的中间值

 原题是:只用两次比较,得到三个数的中间值。 背景:写快速排序的改进算法,取左、中、右三个值的中间值,作为pivot。但是,写了很久,居然写晕了,也不对。于是上网搜,发现,呵呵,很多人都做不对,或者能做对也非常慢。幸好找到的比较好的答案。 答案:不懂的千万别问我啊,据说这是初中数学题。if( (a-b)*(b-c)>0 )     return b;else

2008-11-19 15:02:00 3856 2

原创 Exceptional C++ 读书笔记

  Exceptional C++ 读书笔记 1 泛型程序设计与C++标准库(没看) Item 1 Iterator: 1)注意当前迭代器是否有效,如果无效则解引用产生程序错误;2)注意当前迭代器生命期,某些容器经过某些操作后将重新分配内部存储空间,则当前迭代器无效;3)有效范围, 类似find(first, last, value)时, 迭代器first 必须在last之前,必须保证

2008-11-17 09:43:00 1897 1

原创 More effective C++学习总结

More effective C++摘要3 基础议题部分:3.1 M1:指针与引用的区别首先,要认识到在任何情况下都不能使用指向空值的引用,引用必须被初始化。一个引用必须总是指向某些对象。(不存在指向空值的引用意味着使用引用的代码效率比使用指针的要高)其次,指针可以被重新赋值以指向另一个不同的对象。什么情况下应该使用指针? 1存在不指向任何对象的可能。 2能够在不同时刻指向不同对象什么情况下应该使

2008-11-12 17:48:00 1618

原创 光棍节过生日

 光棍节过生日,不容易,纪念一下。  发来贺电的有很多单位:全国各大基金公司保险同事(女)若干同事(男)二名 趁着高兴,多记了几个日记,X年X月的时候,可能和闺女儿子一起看,趁机教育一下后代。

2008-11-11 11:01:00 639

原创 查找单向链表倒数第m个

 绝对的原创。欢迎转载,转载时请标明出自hisense:[http://blog.csdn.net/sandyzhs]  题目:单向链表,长度未知,(方便说明,假设为n个),找出倒数第m个 分析:大众知道2个,我知道4个。 [大家知道的]1,遍历一次,查出链表长度,n;再次遍历,走n-m步,停止。时间复杂度:n+(n-m); 2,两个指针:p在前

2008-11-11 10:47:00 2110 1

原创 按位反转无符号字符

 题目:一个unsigned char,记为src,把其中的字节高位和低位全部互换 分析:想找出src中某一位的bit,肯定是要拿一个该位为1其他位为0的char,记为flag,和他进行&,取出该位的值,记为onebit。把该onbit左移(或者右移,看是否现在已经到了中间点)一定位数,就变到了他应该放到的位。然后flag左移一位,再次&,取出下一位。这样,依次取出来然后把所有

2008-11-11 10:35:00 2644

原创 全排列

问题:n个数字的数组,进行全排列。 原理:1.先分成(1)和(2,3,4),然后对(2,3,4)全排列 2.把(1)分别和(2,3,4)中的数对调 3.比如一次调换(2),(1,3,4),然后对(1,3,4)全排列 4.调换的算完了,恢复,变成(1),(2,3,4),再调换下一个(3),(1,2,4) 代码:using   namespace   std;   

2008-11-07 16:56:00 600

原创 最大公约数和最小公倍数

 看《数据结构》,忽然发现最大公约数原来这么简单,上学的时候是咋学的? 原理:1,最大公约数(G C D),使用欧几里德算法,也叫辗转求余法  g cd(a,b)=gc d(b,a mod b)  当b为0时,两数的最大公约数即为a2,最小公倍数(LCM)  lcm(a, b)*gc d(a, b) = a*b 递归版本代码://两个数的最大公约数--欧几里

2008-11-07 15:56:00 851

原创 大数乘法 和 多项式乘法

 看数据结构,链表的应用,讲到他可以处理多项式的乘法。实际上也可以拿相似的思想做大数相乘,只是把输入源从链表变为数组即可。 基本原理:1,把两个数字a和b转换成字符,放到字符数组里;或者把数字的每一位隔离开分别放到数组里作为一位,这样更方便乘法处理。这样做的根本好处是:相乘的时候不会造成溢出。2,结果数组的长度,最大应该是a的长度+b的长度+1,所以定义一个这样的数组;3,

2008-11-06 15:04:00 847

原创 下一个是啥?1, 2, 6, 42, 1806, ???

今天收到朋友一个问题: 学校里学的数学是不是都退步啦,呵呵!  .... 第六个数字是什么 ? 算算看吧,附上解开这个谜的人员名单,密码就是第六个数字。  1, 2, 6, 42, 1806, ??? 本来我是不屑于这类小问题的,但是这次还是想试一试,万一能解决那,呵呵。 拿出excel,126421806 ??

2008-11-06 13:49:00 2079

原创 三人行,必有我师

 前一阵在微软面试之后,和猎头J聊天。我说,近半年我的计划是在数据库开发,和项目管理方面做一些深入学习。她建议我只专一项,或者技术,或者管理;推荐技术,因为大公司很难从外面招PM的,即使有,也不会太多。 我深以为然,谢谢。 过了大概一个月,为了应付面试,我准备突击复习一下Effective C++,于是和motte聊。他建议,不要只是过一下那么简单,一定要重新好好学习才行;我觉得有道理

2008-11-06 12:41:00 770

原创 好友离职,发文纪念

 忽然听到motte的“搞定了”,然后马上就看到msn的签名:V心里很高兴,然后忽然也比较伤心,这么多年了,不容易啊;唉,发文 以纪念。 一直知道"不需要不引入第三变量的变量交换"的一种办法,就是++--;今天终于知道并且理解了第二种方案。 因外上面的算术交换算法有导致变量溢出的危险,所以我们再想办法引入一个逻辑运算——位异或,也能得到交换效果,而且不会导致溢出。 位异或运算符

2008-11-05 15:03:00 886

空空如也

空空如也

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

TA关注的人

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