JobHunting — 二分查找

算法不多说了,相信如果有人读过Jon Bentley 的《Programming Pearls》,就会十分重视这个算法了。记得上大学的时候,写的第一个程序也是这个,:-)。 #include <stdio.h> #include <stdlib.h> typedef int DataType; int length = 10; int data[] = {1, 3, 5, 23, 45, 231, 234, 754, 5632, 12345}; int bS(DataType * d, int length, DataType target) { int left = 0, right = length-1, mid; if    (length <= 0) { return -1; } while (left <= right) { mid = (right + left) >> 1; if (d[mid] > target) { right = mid – 1; } else if (d[mid] == target) { return mid; } else { left = mid + 1; } } return -1; } int main (int argc, char* argv[]) { if (argc != 2) { printf(“Usage:binarySear

Linux系统调用篇1—vfork、fork、clone

下面是转自一个来自与JavaEye的blog:http://memorymyann.iteye.com/blog/235638 下面是blog的内容:大部分的内容都写得很好 fork,vfork,clone都是linux的系统调用,用来创建子进程的(确切说vfork创造出来的是线程)。 先介绍下进程必须的4要点: a.要有一段程序供该进程运行,就像一场戏剧要有一个剧本一样。该程序是可以被多个进程共享的,多场戏剧用一个剧本一样。 b.有起码的私有财产,就是进程专用的系统堆栈空间。 c.有“户口”,既操作系统所说的进程控制块,在linux中具体实现是task_struct d.有独立的存储空间。 当一个进程缺少d条件时候,我们称其为线程。 1.fork 创造的子进程复制了父亲进程的资源,包括内存的内容task_struct内容(2个进程的pid不同)。这里是资源的复制不是指针的复制。下面的例子可以看出 [root@l