输入一个int型的数组(数量大于5),请写个算法,返回最大的5个数,请用c#写。
来源:百度知道 编辑:UC知道 时间:2024/06/23 18:18:02
{
//算法
}
Sorry,不能用排序
这里说“输入一个数组”,是指当参数传进来,不需要自己生成
afei929 的算法是对的,但是复杂度太高了,需要5*N次计算,有没有复杂度低的算法啊。
长度不限啊。
//结果放在一个数组中
int[] getMaxFiveElement(int[] intArr)
{
int[] result =new int[5];
for(int i=0; i<5; i++) //只要找5次
{
int max = i; //假设i是最大的
for( int j=i+1; j<intArr.length; j++) //与他后面的元素比较,找到真正最大的
{
if(intArr[i]<intArr[j])
max = intArr[j];
result.push(max);
int temp = intArr[i]; //将最大的放在数组最前面不再理了
intArr[i] = intArr[j];
intArr[j] = temp;
}
}
return result;
}
-------------------
你数组的长度是多少?
你虽然不是排序,但是用的是排序的算法。你可以比较一下各种排序算法看看哪种适合你的要求。
int[] intArr=new int[100];
ArrayList myList=new ArrayList();
Random rnd=new Random();
while(myList.Count<100)
{
int num=rnd.Next(1,101);
if(!myList.Cont