关于一个问题以及我的方案

Kent.Zhang 2013-05-26 02:03:19
有一个数组,假如有一百万个数据,其中有一个的值与其他的不同。
如何在最短时间内将这个数据找出来
要求:不要开辟新的使用空间,如使用哈希表
不要使用判断语句,如if

我觉得我的答案比较给力,给出如下:

第一个,提取数据特征,然后使用跳转表。
比如下面以输入一个CHAR数组为例。C语言,需要查找0xfe的情况下。

#define TARGET 0xfe

STATIC void (*JumpList)(char **)[2] = {check, function};

void *check(char **data)
{
*data += 1;
}

void *function(char **data)
{
printf("Find !\n");
}

int find(char data[], int data_count)
{
int i;
char *tmp_data = data;

for (i = 0; i < data_count; i++)
{
JumpList[*iData & TARGET](&iData);
}
}


加班加的好累啊…………
...全文
125 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧