如:一维数组的数据是:2,3,1,1,3,1,4,5,6,7,6,6,7,8,9,10,9,10.删除后,数组中的内容应该是:1,2,3,4,5,6,7,8,9,10
#include<iostream>
#include<vector>
#include<time.h>
using namespace std;
void del_repeat(int b[],int n);
void main()
{
clock_t start,finish;
start=clock();
float duration;
int a[18]={2,3,1,1,3,1,4,5,6,7,6,6,7,8,9,10,9,10};
del_repeat(a,18);
cout<<endl;
finish=clock();
duration=(float)(finish-start)/1000 ;
cout<<"运行时间 "<<duration<<endl;
}
void del_repeat(int b[],int n)
{
int m=0,k=0;
vector<int> mark,arr;
for (int i=0;i<n;i++)
{
int flg_repeat=0,flg1=0,flg_norepeat=1;
for (int j=0;j<n;j++)
{
if(i==j)
continue;//不处理自己
for( m=0;m<mark.size();m++)
if(i==mark[m]) //重复库
{
flg_norepeat=0;
flg1=1;
break; //只跳出这里的循环啊 m=0;m<...
}
if(flg1==1) //因为是重复的才跳出
{
break;
}
if(b[i]==b[j])
{
flg_norepeat=0;
flg_repeat=1;
mark.push_back(j);
}
}
if(flg_repeat==1) //重复的只保留一个
arr.push_back(b[i]);
if(flg_norepeat==1) //单个的
arr.push_back(b[i]);
}
int tmp=0;
for( m=0;m<arr.size()-1;m++)
for(k=m+1;k<arr.size();k++)
{
if(arr[m]>arr[k])
{ tmp=arr[k];
arr[k]=arr[m];
arr[m]=tmp;
}
}
for( m=0;m<arr.size()-1;m++)
cout<<arr[m]<<'\t';
}
说来忏愧 啊,,这个程序写了估计大半天,每天敲代码才是王道!!!死看书没用
PS这道题目是一家公司的笔试题目