如何去掉数组里重复的数据
如:有一数组 a[]={5,2,2,7,2};
进行筛选后的数组 就变为{5,2,7}
求思路,。.
[解决办法]
#include <set>#include<iostream>using namespace std;int main(){ int a[6] = {1,2,3,1,2,5}; set<int>iSet; int i = 0; set<int>::iterator setIt; for (i=0;i<6;i++) { iSet.insert(a[i]); } setIt = iSet.begin(); while (setIt != iSet.end()) { cout << *setIt << " "; ++setIt; } cout << endl; return 0;}
[解决办法]
while (setIt != iSet.end()) { a[i++] = *setIt; cout << *setIt << " "; ++setIt; }
[解决办法]
#include "stdio.h"#include "stdlib.h"#include "string.h"int compare(const void *p1, const void *p2){ return (*(char*)p1 - *(char*)p2);}void show_bytes(const char* p, int len){ int i; for(i=0;i<len;i++){ printf("%02X, ", p[i]); if( (i&15) == 15)printf("\n"); }}int unique(char* p, int len){ int i; int j = 0; qsort(p,len,1,compare); for(i=0;i<len;i++){ if(p[i] != p[j]){ p[++j] = p[i]; } } return j+1;}int main(){ char arr[] = {1,2,5,3,4,7,4,8,5,3,5,4,3,6,7,7}; int len = unique(arr, sizeof(arr)); show_bytes(arr, len); return 0;}
[解决办法]
如果你只要输出去掉 重复, 可以不需要排序
[解决办法]
int aa(int a[], int n)
{
int *b=a;
int i,j;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(b[i]==b[j])
{
while(1)
{
int m = j;
a[m]=a[m+1];
m++;
if (m == n-1)
break;
}
n--;
}
}
}
for(i=0;i<n;i++)
{
cout<<a[i]<<",";
}