给指定一个长度为100w的无序数组,用js编写,找出其中10个最大的数?
发布网友
发布时间:2022-05-14 14:31
我来回答
共1个回答
热心网友
时间:2022-04-27 08:23
//用过java,但没写过javascript,还请见谅。
import java.lang.IndexOutOfBoundsException;
public class findMax10 {
public findMax10(int dat[],int length)
{
try
{
int temp = dat[length - 1]; //尝试读取length指定的数组最后一位
}
catch(IndexOutOfBoundsException e1)
{
System.out.println("参数不足1\n");
}
int x[] = new int[10];//最大数ID号记录
int y[] = new int[10];//最大数数值记录,两个数组元素一一对应
for(int i = 0;i < 10;i ++)
{
y[i] = 0x80000000; //将所有最大数记录初始化为最小值
}
for(int i = 0;i < length;i ++) //扫描所有数据
{
for(int j = 0;j < 10;j ++)
{
if(dat[i] >= y[j])//匹配记录,发现第一个不大于自己的记录
{
for(int k = 9;k > j;k --)//将该记录位置后面的记录往后移动,尾部的随之被删除
{
x[k] = x[k - 1];
y[k] = y[k - 1];
}
x[j] = i; //将该记录填入相应位置,如此往复,记录会被从大到小排序。
y[j] = dat[i];
break; //跳出小循环
}
}
}
int temp = length<10 ? length : 10; //如果length满10,就打印前10个,否则打印length个。
System.out.printf("最大的%d个数为:\n",temp);
for(int i = 0;i < temp;i ++)
System.out.printf("%d\t号的 %d,\n",x[i],y[i]);
System.out.println("----------------\n");
}
public static void main(String[] args)
{
int dat0[] = {77,121,32,81,81,32,110,117,109,98,101,114,32,105,115,32,56,50,49,55,54,52,57,57,48,0};
findMax10 findmax10 = new findMax10(dat0,26);
}
}