中兴笔试题,供参考,大家一起努力
今天上午中兴的笔试题,听说是原题,之前没准备,真的很后悔,自己做的慌里慌张,不知道哪没注意越界还是超时了。
痛定思痛。自己下午又把上午的代码缕了一遍。自己试了一组数,是通过了,有不完善之处供大家讨论。
好多还是不懂,感觉是用最笨的方法在解决问题
#中兴##笔试题目##include <iostream> #include <vector> #include <time.h> using namespace std; int main() { clock_t start,finish;//测运行时间 start=clock(); int a[]={40,60,20,30,40,50,30,30};//测试用的数组 vector<int> salaries(a,a+8); int num=salaries.size(); vector<int> res; int i=0; for(;i<num;i++)//完成工资的排序,冒泡 { for(int j=0;j<num-i;j++) { if(salaries[j]<salaries[j+1]) { int temp=salaries[j+1]; salaries[j+1]=salaries[j]; salaries[j]=temp; } } } //把工资装进桶中,array为工资数,freq为工资出现的频率,利用相同的数组下表对应 int *array=new int [10]; int *freq=new int [10]; array[0]=salaries[0]; freq[0]=0; int number=0; int n=0; for(;n<num;n++) { if(salaries[n]==array[number]) freq[number]++; else if(salaries[n]<=0) continue; else if(salaries[n]!=array[number]) { number++; array[number]=salaries[n]; freq[number]=1; } } //按工资出现的频次排序,冒泡 for(i=0;i<=number;i++) { for(int m=0;m<=number-i;m++) { if(freq[m]<freq[m+1]) { int tempf=freq[m]; int tempa=array[m]; freq[m]=freq[m+1]; array[m]=array[m+1]; freq[m+1]=tempf; array[m+1]=tempa; } } } //输出按频次排序后的数组 for(i=0;i<number;i++) { while(freq[i]>0) { res.push_back(array[i]); cout<<array[i]<<" "; freq[i]--; } } //程序运行时间 finish=clock(); double duration=((double)(finish-start)/CLOCKS_PER_SEC)*1000; cout<<duration<<"ms"<<endl; return 0; }