中兴笔试题,供参考,大家一起努力

今天上午中兴的笔试题,听说是原题,之前没准备,真的很后悔,自己做的慌里慌张,不知道哪没注意越界还是超时了。
痛定思痛。自己下午又把上午的代码缕了一遍。自己试了一组数,是通过了,有不完善之处供大家讨论。
好多还是不懂,感觉是用最笨的方法在解决问题
#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;

}

#中兴##笔试题目#
全部评论
楼主第二道题能发一下吗
点赞 回复 分享
发布于 2019-08-22 11:31
什么题型啊  有选择题吗  题都是什么类型的啊
1 回复 分享
发布于 2019-08-22 19:32
楼主,是什么题呀
点赞 回复 分享
发布于 2019-08-21 22:46

相关推荐

评论
3
58
分享
牛客网
牛客企业服务