您的位置:首页 > 其它

编写一个程序,自定义以为数组,删除一维数组中所有相同的数,使之只剩一个。数组中的数按由小到大顺序排列,并显示运行所用时间。

2016-04-22 23:17 423 查看
如:一维数组的数据是: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这道题目是一家公司的笔试题目
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: