给指定一个长度为100w的无序数组,用js编写,找出其中10个最大的数?

如题所述

//用过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);

    }
}

温馨提示:答案为网友推荐,仅供参考
相似回答