社区
C语言
帖子详情
算法实现:在一组数据中查找相同的数据,并将相同的数据放在一块儿
chmj1222
2009-05-21 01:41:39
比如:我有这样一组数据,n1,n2,n3,n4,n5,n6,n7,n8,n9,一共十个数据,我想通过一个算法将这组数据中相等的数据找出来,并放在一起,例如,若n1=n4=1,n5=n9=8我希望可以这样存放这两个相等的数据,{n1=1,n4=1},{n5=8,n9=8};
若有100个数据呢?
各位有没有比较简单有效的算法,我自己弄了一个,复杂度太大了,不好~!谢谢大家哈~!
...全文
579
15
打赏
收藏
算法实现:在一组数据中查找相同的数据,并将相同的数据放在一块儿
比如:我有这样一组数据,n1,n2,n3,n4,n5,n6,n7,n8,n9,一共十个数据,我想通过一个算法将这组数据中相等的数据找出来,并放在一起,例如,若n1=n4=1,n5=n9=8我希望可以这样存放这两个相等的数据,{n1=1,n4=1},{n5=8,n9=8}; 若有100个数据呢? 各位有没有比较简单有效的算法,我自己弄了一个,复杂度太大了,不好~!谢谢大家哈~!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
crst_zh
2009-05-27
打赏
举报
回复
直接用mutimap做吧,放进去自然就有序了,相邻的也在一起。
lhy
2009-05-27
打赏
举报
回复
附议hash
小魔菇
2009-05-27
打赏
举报
回复
用hash吧
jiyan1221
2009-05-27
打赏
举报
回复
先排序,后分组。。。。
djj2007
2009-05-26
打赏
举报
回复
排序,相同的值就会在一起了,遍历下就行了
基于比较的排序的话o(nlogn)
不基于比较的话 o(n)
leegongbo
2009-05-26
打赏
举报
回复
hash表不知道可不可以。
设计hash函数。有相同的hash值的在一起。相同的数的hash值肯定相等
一次遍历就可以把相等的数归到一块。O(n)复杂。
然后在相同的hash链表中找相等的。这时可以选择排序
sam_pei
2009-05-22
打赏
举报
回复
排序吧
huizhouxueyuan
2009-05-22
打赏
举报
回复
给你个思路: 建立一个 multimap, 元素为 <元素值,元素位置> 这样的pair
#include<iostream>
#include<vector>
#include<map>
#include<set>
using namespace std;
int main()
{
vector<int> yourArrays;
yourArrays.push_back(1);
yourArrays.push_back(3);
yourArrays.push_back(5);
yourArrays.push_back(9);
yourArrays.push_back(3);
yourArrays.push_back(8);
yourArrays.push_back(5);
yourArrays.push_back(9);
yourArrays.push_back(1);
yourArrays.push_back(1);
yourArrays.push_back(3);
multimap<int, int> words;
set<int> value;
for(int i = 0; i < yourArrays.size(); ++i)
{
value.insert(yourArrays[i]);
words.insert(make_pair(yourArrays[i], i));
}
for(set<int>::iterator pos = value.begin(); pos != value.end(); ++pos)
{
for(multimap<int, int>::iterator mpos = words.lower_bound(*pos); mpos != words.upper_bound(*pos); ++mpos)
{
cout << "yourArrays[" << mpos->second << "] = " ;
}
cout << *pos << endl;
}
cout << endl;
return 0;
}
光宇广贞
2009-05-22
打赏
举报
回复
代码没有,思路有。
对于统计重复数据的情况。
若是全整型值的话,使用“基数统计”法,统计的过程中记录下节点位置,然后就可以根据统计情况得出你所要的元包组。
复杂度是线性的。
关于“基数统计”是“基数排序”思想的,相关的你去查一查。
pathuang68
2009-05-22
打赏
举报
回复
排序
cyldf
2009-05-21
打赏
举报
回复
嗯,先排序,然后O(n)就能取出相同数据。
ltc_mouse
2009-05-21
打赏
举报
回复
可否考虑先排序? 然后遍历一次即可分组...
mengde007
2009-05-21
打赏
举报
回复
可以写一个树型结构;插入之,判断;
lingyin55
2009-05-21
打赏
举报
回复
参考
http://zhidao.baidu.com/question/20000652.html
chmj1222
2009-05-21
打赏
举报
回复
希望能给出好的思路和关键的代码~! 谢谢~!
【
数据
结构】
查找
:顺序
查找
、折半
查找
、二叉排序树、平衡二叉树、B树、哈希
查找
本节讨论两类不同的
查找
表:静态
查找
表和动态
查找
表,给出在不同
查找
表上进行
查找
的不同
算法
和性能分析以及动态
查找
表的创建方法。 1
查找
的基本概念 静态
查找
: 基于线性表的
查找
动态
查找
: 基于树的
查找
(二叉...
数据
结构
查找
和排序
算法
堆排序的思路很简单,首先将存
放在
数组
中
的元素组成一个初始堆,堆顶的元素就是最大值或者最小值,取出堆顶元素之后将堆底元素放入堆顶,再进行堆排序。插入排序是一种简单直观的排序
算法
,其基本思想是将一个待排序...
如何学习
数据
结构和
算法
首先我们了解
数据
结构和
算法
的定义:从广义上讲,
数据
结构就是指
一组
数据
的存储结构。
算法
就是操作
数据
的
一组
方法。从狭义上讲,是指某些著名的
数据
结构和
算法
,比如队列、栈、堆、二分
查找
、动态规划等。那
数据
结构...
经典
查找
算法
及其Python
实现
上一篇介绍了几大排序
算法
,从基本原理解释到Python代码
实现
,平时有空的话还需要经常翻出来复习复习。今天就主要来看看另外一大类
算法
:经典
查找
算法
。 参考资料: 《大话
数据
结构》、《
算法
第4版》(配套视频:...
【
数据
结构与
算法
】二分
查找
算法
及例题
数据
结构与
算法
:二分
查找
算法
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章