- 博客(15)
- 收藏
- 关注
翻译 写出几种常用的排序算法以及执行效率
1 插入排序void insertion_sort(int* array,int len){ int i,j,key; for(j = 1; j key = array[j]; i = j - 1; while(i >= 0 && array[i] > key){ array[i + 1] = array[i]; i--; } array[i + 1] = key; }}
2007-09-04 15:34:00
975
原创 二叉树的遍历(非递归算法)
二叉树的遍历是面试中比较常见的问题,而且一般不会考你用递归的方法来实现。面试前准备一下非递归的算法还是有必要的。 A
2007-08-29 10:31:00
1474
原创 监视其它进程中某一内存的数据的变化
怎么样才能得知其他进程中某一内存的内容发生了变化?有几个条件我想首先说明一下,在win32系统下想实时得到其他进程一段内存的内容变化是不可能的。唯一的可能是定时扫描。另外如果想要得知内核态内存的变化也是不太容易实现(姑且允许我这么我这么说,因为在方面我没有进行深入的调查)。还有CPU的要求我现在只是针对intel,因为手头没有AMD的CPU,所以就没有测试过。 如果想要实时得到其他进程
2007-08-28 07:08:00
2188
1
原创 鬼谷子 猜数问题
这个问题的答案是13和4,原理我这里先不解释,先贴一段解决这个问题的代码 ,如下所示:void Guess(){int Num = 100; int y = 0; BOOL find = FALSE; int *PrimeBuffer = new int[100]; memset(PrimeBuffer, 0 , sizeof(int) * 100); int *PrimeNum =
2007-08-28 07:05:00
2939
原创 12小球称重问题
题目:已知有12个小球,一样的形状和外观,其中有一个是次品,现在给你一个无砝码的天平,称三次,把这个次品找出来,并且求出这个次品相对真品是偏重还是偏轻?解答:首先把小球分成三堆,每堆四个。 A:(1,2,3,4) B:(5,6,7,8) C:(9,10,11,12)情况 一:1 第一称重随便拿出两堆来称, 这里不妨假设拿出A和B
2007-08-28 06:56:00
6029
3
翻译 字符串的逆向输出
比如说给定一字符串 " I Love ShanLiJuan " 那么它的逆向输出就是"ShanLiJuan Love I " 这里空白符作为单词的分割符。方案一: 使用标记法,需要一个缓存区。但是比较容易理解, 就是逆向扫描源字符串,把每个单词正向拷贝到缓存区,代码如下:void ReverseWord(char* p_string){ int word_read_pos = 0;
2007-08-27 09:56:00
1515
翻译 字符串的全排列
假如给定一字符串“ABCDE” 编写一段程序输出它的全排列,代码如下:void DoPermute(char* in, char* out,char* used,int length,int recurse_level){ int i; if(recurse_level == length) { printf("%s/n",out); //print permutat
2007-08-27 09:28:00
664
翻译 删除特定字符
用C语言编写一个高效率的函数来删除字符串里的给定字符。这个函数的调用模型如下所表示:void RemoveChars(char* str,char* remove);Answer:void RemoveChars(char* str,char* remove){ int src,dst,remove_array[256]; /* zero all element in ar
2007-08-26 22:31:00
734
翻译 统计给定一个整数以二进制表达时含有1的个数
int OneInInteger(int number){ int count = 0; while(number){ number = number & (number - 1); count++; } return count;}
2007-08-26 22:11:00
687
翻译 判断字节的升序存储还是降序存储(little-endian or big-endian)
int Endianee(void){ union{ int the_integer; char the_single_byte; }ENDIAN; ENDIAN endian; endian.the_integer = 1; return endian.the_single_byte;}
2007-08-26 22:06:00
802
原创 两线段相交的快速判断-叉积的一个应用
设两个有向线段p1p2,p3p4 ,判断他们是否相交的充分必要条件是: p1, p2 位于包含p3,p4的直线的两侧,而且p3,p4也位于包含p1,p2的直线的两侧。另外还要考虑边界条件。下面是伪代码:SEGMENTS-INTERSECT(p1, p2, p3, p4) 1 d1 ← DIRECTION(p3, p4, p1) 2 d2 ← DIRECTION(p3, p
2006-09-01 13:57:00
3656
原创 SEH结构化异常处理
千言万语从何说起呢?嗯,还是先说说SEH的特点吧:SEH的优点在于当你编写代码的时候,可以集中注意力完成任务,如果在运行的时候出现了问题,系统会捕获到错误并且通知你出了问题.使得SEH工作的任务主要落在编译器而不是操作系统上.当进入,退出异常块时候,你的编译器必须产生特殊的代码.编译器必须产生处理SEH的数据结构,还必须提供操作系统能调用的回调函数来使得异常块能被遍历.编译器还负责准备栈框
2006-06-04 07:39:00
2592
5
转载 (SEH)结构化异常处理ABC
千言万语从何说起呢?嗯,还是先说说SEH的特点吧:SEH的优点在于当你编写代码的时候,可以集中注意力完成任务,如果在运行的时候出现了问题,系统会捕获到错误并且通知你出了问题.使得SEH工作的任务主要落在编译器而不是操作系统上.当进入,退出异常块时候,你的编译器必须产生特殊的代码.编译器必须产生处理SEH的数据结构,还必须提供操作系统能调用的回调函数来使得异常块能被遍历.编译器还负责准备栈框
2006-06-04 07:32:00
1277
原创 C++ 中临时对象的陷阱
在问题叙述之前,我们先来看一段代码。class MyString{public: char* GetBuffer() const { return m_pBuffer; }private: void CopyContent(const char* pSrc) { m_pBuffer = new char [strlen(pSrc) + 1]; strcpy
2006-05-04 09:42:00
1187
1
原创 条款24 成员函数查找
成员函数的查找过程要涉及到三个步骤。首先,编译器查找函数的名字,然后从后续的函数选择一个最匹配的函数,最后,编译器检查函数的访问权限。 大多数与函数名不匹配的错误并不是编译器本身的问题,而是我们对成员函数查找机制的理解有问题。考虑下面的代码: class B { public: //... void f( double );};class D
2006-05-01 08:51:00
818
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人