编写一个程序,自定义以为数组,删除一维数组中所有相同的数,使之只剩一个。数组中的数按由小到大顺序排列,并显示运行所用时间。
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
PS这道题目是一家公司的笔试题目
#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这道题目是一家公司的笔试题目
相关文章推荐
- 求最长有效匹配括号子串的长度(Longest Valid Parentheses)
- 关系规范化之函数依赖集闭包和属性集X对于函数依赖集F的闭包
- js冒泡排序
- poj-3187-Backward Digit Sums
- HDU 5671 Matrix
- POJ_1064_Cable_master_(二分,假定一个解并判断是否可行)
- Web开发(二)--JSP
- strictfp关键字
- SQL Server Change Data Capture
- ehcache,redis,db的性能、一致性比较
- 算法训练 装箱问题
- N皇后问题
- 利用jquery写无缝循环滑动的轮播图
- Android--WindowManager.LayoutParams(下)
- 结构体的使用
- Android从启动到程序运行发生的事情
- ubuntu安装weblogic64位
- 【2016-04-22】php面试心得
- 谈谈自己对java的学习看法
- java笔记--笔试中极容易出错的表达式的陷阱