求数组查找高效解?

party9ly 2005-09-29 04:46:56
一个数组,里面的元素是不大于数组长度的正整数,有一个相同,问怎么找出来,
例如:int a[5] = {1,2,4,3,4},但是如果是海量数据咋整啊?
觉得排序的效率低一些好像
...全文
161 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2005-09-29
  • 打赏
  • 举报
回复
不,好像不对。。。
晨星 2005-09-29
  • 打赏
  • 举报
回复
对。
t_y 2005-09-29
  • 打赏
  • 举报
回复
加第一个减一,第二个减二。。
欢迎各位大侠多多指教
t_y 2005-09-29
  • 打赏
  • 举报
回复
可以计算数组的和与没有重复的数组的和
也许看起来会很大,但是每扫描一遍逐个减就是了
由于只有一个重复,由差就可以知道重复的是哪个了
不过这样找不到它的位置

party9ly 2005-09-29
  • 打赏
  • 举报
回复
是内排序,不用外排序!
晨星 2005-09-29
  • 打赏
  • 举报
回复
如果在内存里一次可以搞定话,使用一个跟数组长度一样长的另外一个数组,使用每一个元素对应记录每一个数字出现的次数,那不是最坏情况下扫描一遍就出来了吗?
qhfu 2005-09-29
  • 打赏
  • 举报
回复
zhouhuahai(道号"虚无") 这个算法,还不如先排序。
qhfu 2005-09-29
  • 打赏
  • 举报
回复
可在线性时间内找到,不过空间可能耗一些!
zhouhuahai 2005-09-29
  • 打赏
  • 举报
回复
int findN(int *a, int n)
{
for(int i = 1; i<n; i++)
{
int count = 0;
for(int j = 0; j<n; j++)
{
if(a[j] == i)
{
count++;
if(count == 2)
return a[j];
}
}
}
return 0;
}
晨星 2005-09-29
  • 打赏
  • 举报
回复
“海”到什么程度啊?需要内外存不断交换么?

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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