09 2011 档案

摘要:一个与C++库函数不相上下的QuickSort (言过其实了,C++ STL的Sort实现用的是Introsort,是快速排序的变种,主要是递归过深的时候自动转换为堆排或插入排序(是堆排还是插入排序还要视具体实现而定),可以保证最坏情况下还是O(nlogn),并且充分使用了尾递归优化(快排最后不是两个递归吗?最后一个递归可以不必真的递归,可以像gcd算法一样通过迭代参数来改善运行速度),STL快... 阅读全文
posted @ 2011-09-15 13:37 caleb yuan 阅读(161) 评论(0) 推荐(0)
摘要:long atol(const char *nptr){ int c; /* current char */ long total; /* current total */ int sign; /* if ''-'', then negative, otherwise positive */ /* skip whitespace */ while ( isspace((int)(unsigned char)*nptr) ) ++nptr; c = (int)(unsigned char)*nptr++; sign = c; if (c == '' 阅读全文
posted @ 2011-09-13 17:55 caleb yuan 阅读(269) 评论(0) 推荐(0)
摘要:作者 K_Eckel 原文地址 http://www.mscenter.edu.cn/blog/k_eckel 问题 在面向对象系统设计中经常可以遇到以下的两类问题: 1)为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现,达到了多态的目的。这里很容易... 阅读全文
posted @ 2011-09-07 10:05 caleb yuan 阅读(236) 评论(0) 推荐(0)
摘要:有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。 问题: 1、如何判断一个链表是不是这类链表? 2、如果链表为存在环,如何找到环的入口点? 解答: 一、判断链表是否存在环,办法为: 设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序如下: bool IsExitsLoop(slist *head){ slis... 阅读全文
posted @ 2011-09-05 15:15 caleb yuan 阅读(691) 评论(0) 推荐(0)
摘要:摘自《c/c++中常见内存泄露与对策及预防措施浅析》 1 内存泄漏的发生方式 以发生的方式来分类,内存泄漏可以分为以下四类。 (1)常发性内存泄漏。 发生内存泄漏的代码会被多次执行到,每次被执行时候都会导致一块内存泄漏。 (2)偶发性内存泄漏。 发生内存泄漏的代码只有在某些特定环境或操作过程中才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的... 阅读全文
posted @ 2011-09-04 15:04 caleb yuan 阅读(1414) 评论(0) 推荐(2)
摘要:最来在项目中遇到大型程序出现SIGSEGV ,一直不知道用core dump工具来调试程序,花了近一周的时间,才定位问题,老大很生气,后果很严重,呵呵,事后仔细学习了这块的知识,了解一点core dump的知识。 在使用半导体作为内存的材料前,人类是利用线圈当作内存的材料(发明者为王安),线圈就叫作core ,用线圈做的内存就叫作“core memory”。(线圈的单词应... 阅读全文
posted @ 2011-09-01 18:49 caleb yuan 阅读(197) 评论(0) 推荐(0)