社区
C++ 语言
帖子详情
怎样判断一个数组(无序)中是否有相同的元素呢?
AAA20090987
2009-09-14 12:08:04
如题:
除了先将该数组排序以外,还有另外的(效率尽量高一点)算法吗?
...全文
1314
14
打赏
收藏
怎样判断一个数组(无序)中是否有相同的元素呢?
如题: 除了先将该数组排序以外,还有另外的(效率尽量高一点)算法吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gcc_gun
2009-09-14
打赏
举报
回复
补充2楼的:1、在遍历时,数组中数为i时,b[i]++
2、在b[i]++后判断其是否>1,而不用全部遍历完。
hoomey
2009-09-14
打赏
举报
回复
楼上的方法不错
liao05050075
2009-09-14
打赏
举报
回复
用排序的效率O(nlog(n))
使用Hash的效率是O(n),具体是:
开个数组b[maxValue],开始全部为0.
然后数组中有i这个数,就把b[i]设为1,于是,遍历一次数组就可以得到结果了
aopha
2009-09-14
打赏
举报
回复
遍历检查...
AAA20090987
2009-09-14
打赏
举报
回复
学习了,
谢谢各位啊。
shiweifu
2009-09-14
打赏
举报
回复
学习了~~~
liao05050075
2009-09-14
打赏
举报
回复
其实还有一种选择,那就是用二叉搜索树或者红黑树,虽说效率也是O(nlogn)的,但实际上效果应该会比直接排序来得好些。
如果懒得写二叉搜索树或者红黑树,那就用C++ STL的set容器吧。
猫已经找不回了
2009-09-14
打赏
举报
回复
位图或者hash.
如果空间消耗太大,可以考虑适当排序。
whg01
2009-09-14
打赏
举报
回复
基本方法就是排序、位图这两种方法。但如果数据有特点的话,也许可以做优化。
herman~~
2009-09-14
打赏
举报
回复
mark
建议使用数组标识的方法 牺牲一点空间来提高效率
mstlq
2009-09-14
打赏
举报
回复
[Quote=引用 6 楼 aaa20090987 的回复:]
引用 2 楼 liao05050075 的回复:
用排序的效率O(nlog(n))
使用Hash的效率是O(n),具体是:
开个数组b[maxValue],开始全部为0.
然后数组中有i这个数,就把b[i]设为1,于是,遍历一次数组就可以得到结果了
这个方法挺好的,但消耗的内存好大啊,特别是maxValue是几十万或几千万的时候。
[/Quote]
使用unsigned char数组,一个char有8bit,每bit代表一个数是否存在……
最大1亿的话,所耗内存也不过12.5m……
AAA20090987
2009-09-14
打赏
举报
回复
[Quote=引用 2 楼 liao05050075 的回复:]
用排序的效率O(nlog(n))
使用Hash的效率是O(n),具体是:
开个数组b[maxValue],开始全部为0.
然后数组中有i这个数,就把b[i]设为1,于是,遍历一次数组就可以得到结果了
[/Quote]
这个方法挺好的,但消耗的内存好大啊,特别是maxValue是几十万或几千万的时候。
mstlq
2009-09-14
打赏
举报
回复
如2楼所说,用位图^_^
有两个
数组
a,b,大小都为n,
数组
元素
的值任意,
无序
有两个
数组
a,b,大小都为n,
数组
元素
的值任意,
无序
//要求:通过交换a,b
中
的
元素
,使
数组
a的
元素
之和与
数组
b的
元素
之和之间//的差最小?
Java
中
高效的
判断
数组
中
某个
元素
是否
存在详解
相信大家在操作Java的时候,经常会要检查
一个
数组
(
无序
)
是否
包含
一个
特定的值?这是
一个
在Java
中
经常用到的并且非常有用的操作。同时,这个问题在Stack Overflow
中
也是
一个
非常热门的问题。本文将分析几种常见用法...
Java集合
Java集合就像是
一个
容器,我们可以把多个对象(实际上是对象的引用,习惯上叫对象,)保存到集合容器
中
。在JDK1.5以前Java集合会丢失容器
中
所有对象的数据类型,把所有对象都当初object对象来处理,JDK1.5以后增加...
数组
应用——一维
数组
排序
定义
一个
将
数组
元素
输出到屏幕的函数,函数的参数也是
数组
类型,函数命名为OutputArray; 定义main函数,在其
中
定义并初始化arrayorder
数组
,然后分别钓用InputArray函数输入新的
数组
元素
的值,然后调用SortArray...
c语言+从键盘输入10个
无序
的整数,存放在
数组
中
,找出
数组
中
最大值与最小值的所在的位置,并输出
数组
元素
所在的位置与
数组
元素
的值
从键盘输入10个
无序
的整数,存放在
数组
中
,找出
数组
中
最大值与最小值的所在的位置,并输出
数组
元素
所在的位置与
数组
元素
的值。
C++ 语言
64,640
社区成员
250,579
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章