社区
C语言
帖子详情
简单算法:去掉1维数组中的重复项
carlosadps
2005-01-19 03:43:59
比如我把 1,2,4,4,6,5,8等数据放入1维数组中,在该数组中去掉重复的项
处理后变成 1,2,4,6,5,8
那位大哥给一个较好的算法好吗?
各位兄弟就直接写点代码,我比较愚,光说是听不懂的。
...全文
1856
36
打赏
收藏
简单算法:去掉1维数组中的重复项
比如我把 1,2,4,4,6,5,8等数据放入1维数组中,在该数组中去掉重复的项 处理后变成 1,2,4,6,5,8 那位大哥给一个较好的算法好吗? 各位兄弟就直接写点代码,我比较愚,光说是听不懂的。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
36 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zrpxd
2005-01-23
打赏
举报
回复
还有一种最简单最好理解的方法:
#include<stdio.h>
#include<string.h>
main()
{
int i,j,k;
char str[20];
int len;
gets(str);
len=strlen(str);
for(i=0;i<len;i++)
{
for(k=j=i+1;j<len;j++)
{
if(str[j]!=str[i])
{
str[k]=str[j];
k++;
}
}
str[k]='\0';
}
}
ybt631
2005-01-23
打赏
举报
回复
二叉排序树不错
zyp2kyear
2005-01-23
打赏
举报
回复
先找最大数8,建立一个数组bool a[8+1],全部初始化为false,
1,2,4,4,6,5,8
a[0] = false;
a[1] = true; //1
a[2] = true; //2
a[3] = false; //
a[4] = true; //4
a[4] = true; //4
a[5] = false;
a[6] = true; //6
a[7] = false;
a[8] = true; //8
输出数组中为真的序号就行了
macrod
2005-01-22
打赏
举报
回复
从头读数,向后找,找到一样的,设置为不可能值。
lbaby
2005-01-22
打赏
举报
回复
用二叉树是比较简单的,由于c++中的set是不重复的二叉树
所以,用set来写,是相当简单的:
#include <iostream>
#include <set>
int main(void)
{
int ar[] = {1,1,2,2,3,3,4,4,5,5};
std::set<int> ist(ar,ar+sizeof(ar)/sizeof(ar[0]));
std::set<int>::const_iterator itor;
for( itor = ist.begin();
itor != ist.end();
++itor)
{ std::cout<<*itor<<'\n';}
}
1
2
3
4
5
lbaby
2005-01-22
打赏
举报
回复
用c++可以么?
tigergt
2005-01-22
打赏
举报
回复
int a[7] = {1,2,4,4,6,5,8}, Tail = 0;
BOOL bFind;
for(int i = 1; i < 7; i++)
{
bFind = false;
for(int j = 0; j <= Tail; j++)
{
if(a[i] == a[j])
{
bFind = true;
break;
}
}
if(!bFind)
{
a[Tail++] = a[i];
}
else
{
for(int j = Tail+1; j < 7; j++)
{
a[j] = a[j+1];
}
a[6] = -1;
}
}
后面缺损的为-1
murphy008
2005-01-20
打赏
举报
回复
顶一下!效率最高的办法就是 指针+排序(建议插值法),代码最简单的楼上已经有了!我正在安装VC,不好意思,不能立即给出代码!呵呵!
TomDebug
2005-01-20
打赏
举报
回复
方法1:动态二叉树
方法2:(matlab)中的
any(diff(sort(a)))
效率绝对高
顶matlab
zhousqy
2005-01-20
打赏
举报
回复
再次BS以下偶自己。。。是二叉排序树。。。
--------------------------------------
不错。
--------------------------------------
读数组、插入一棵二叉排序树中、在遍历二叉排序树存到数组中。
zhousqy
2005-01-20
打赏
举报
回复
再次BS以下偶自己。。。是二叉排序树。。。
--------------------------------------
不错。
idler
2005-01-20
打赏
举报
回复
那个是set_union函数。
zhliangle
2005-01-20
打赏
举报
回复
如果用C++編的話可以直接用一個泛算法函數就解決了.不過這個函數我不記得了.哈哈.但是我保證是有的.
macrod
2005-01-20
打赏
举报
回复
个人认为宁无悔program 最初的想法加上 lxd2 的使用链表节省空间的实现就可以了,没必要那么复杂。
lxd2
2005-01-20
打赏
举报
回复
楼主的意思是要保持原来的次序,所以先排序估计行不通!
我用了简单的比较方式,先定义一个链表,把不重复的数依次插在链表的末尾,链表是动态的
故没有浪费内存资源,该程序在vc6.0下通过
#include "stdafx.h"
#include "iostream.h"
struct list
{
int data;
list * next;
};
void main()
{
int a[]={1,2,7,3,3,4,5,4,5,6};
list *head=NULL;
list *tail=NULL;
for(int i=0;i<sizeof(a)/4;i++)
{
bool flag=false;
for(list *p=head;p;p=p->next)
{
if(p->data==a[i])
{
flag=true;
break;
}
}
if(!flag)
{
list *temp=new list;
if(head==NULL)
{
temp->data=a[i];
temp->next=NULL;
head=temp;
tail=temp;
}
else
{
temp->data=a[i];
temp->next=NULL;
tail->next=temp;
tail=temp;
}
}
}
for(list *q=head;q;q=q->next)
cout<<q->data;
}
xue23
2005-01-20
打赏
举报
回复
用冒泡法。把重复的数据去掉。
a[k];
b[k];
int m = 0;
for(int i= 0; i < k-1 ; i++)
{
bool flag = false;
for(int j =i+1; j< k; j ++)
{
if(a[i] == a[j])
{ flag = true; break;}
}
if(flag == false)
b[m++] = a[i];
}
xue23
2005-01-20
打赏
举报
回复
用起泡法。把重新的数据去掉
lovezn0424
2005-01-20
打赏
举报
回复
我觉得楼主的意思可能是要保持原来的次序,所以先排序估计行不通吧!
所以我觉得还是开辟一个新空间,再往里塞东西就可以了。如果有了就不塞……
不过觉得总体上效率不是很高,而且浪费空间。不过实现比较简单……
楼主看着帮吧……
yinyl
2005-01-20
打赏
举报
回复
用关联数组怎么样?
idler
2005-01-20
打赏
举报
回复
插值排序法都可以用,效率直接插入太低,不如二叉排序树。
加载更多回复(15)
Labview一
维
数组删除
重复
项
结构
简单
,方便适用,18版开发,需要其它版本可联系
一
维
数组滤波_一
维
数组滤波_
采集到一
维
数组后,通过平均值方式实现滤波
php去除二
维
数组的
重复
项
方法
主要介绍了php去除二
维
数组的
重复
项
方法,感兴趣的小伙伴们可以参考一下
原地线性复杂度一
维
数组
重复
元素去除
算法
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 原地去重一
维
数组,要求时间复杂度 O(n)、空间复杂度 O(1)。核心思路:在现有数组内用快慢指针完成压缩。快指针 i 扫描全部元素;慢指针 j 始终指向当前已保留序列的末尾。只要 arr[i] 与之前元素不同,就将其前移并更新 j。扫描结束后,0~j 即为无
重复
区间。 示例代码: 复杂度:单趟遍历 O(n),无额外内存 O(1)。
【源代码】C++
算法
(五)一
维
数组去重(复杂度为n且不新开辟空间)
【源代码】C++
算法
(五)一
维
数组去重(复杂度为n且不新开辟空间) https://blog.csdn.net/handoking/article/details/79751939
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章