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

JavaScript010

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

//用过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 = 0i < 10i ++)

        {

            y[i] = 0x80000000  //将所有最大数记录初始化为最小值

        }

        for(int i = 0i < lengthi ++) //扫描所有数据

        {

            for(int j = 0j < 10j ++)

            {

                if(dat[i] >= y[j])//匹配记录,发现第一个不大于自己的记录

                {

                    for(int k = 9k > jk --)//将该记录位置后面的记录往后移动,尾部的随之被删除

                    {

                        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 = 0i < tempi ++)

            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)

    }

}

js获取数组中的一部分元素,有2种方法:slice和filter函数,下面分别介绍。

slice

slice的定义和用法如下,用于截取数组的一段

执行

var arr = [1,2,3,4,5]

arr.slice(1,4)

这2行代码,可以看到截取了1到4下标的代码

filter

filter则用于过滤数组中的一部分元素,剩下的元素就是需要的那部分元素。

现在尝试下面代码,可以将一个数字数组中的偶数过滤掉,只留下奇数。

var arr = [1,2,3,4,5]

arr.filter(e=>e%2==0)

function searchKeys(needle, haystack){var result = [] for (i in haystack){if (haystack[i] == needle){result.push(i)}}return result} var array = [1,2,1,3,1,4,1,5,1,1]var val = 1var result = searchKeys(val, array)alert(result)