如何在保持原始排序的同时获得阵列上的N个最高数字?

时间:2017-05-05 22:45:27

标签: sorting highest

例如对于N个最高数字,假设N = 3

我有一个想要得到b

href

提前致谢。

1 个答案:

答案 0 :(得分:1)

好吧,我接受了这个:

  1. 制作原始数组的副本;
  2. 对复制的数组进行排序以找到n个最高数字;
  3. 浏览原始数组并将其数字与上一步中的n个最高数字进行比较后,在结果数组中移动所需的数字。
  4. 
    
    var a = [12.3,15.4,1,13.3,16.5], n = 3, x = 0, c =[]; // c - the resulting array
    var b = a.slice(); // copy the original array to sort it 
    for(var i = 1; i < b.length; i++) { // insertion sorting of the copy
      var temp = b[i];
      for(var j = i - 1; j >= 0 && temp > b[j]; j--) b[j + 1] = b[j];
      b[j + 1] = temp;
    }
    for(var i = 0; i < a.length; i++) { // creating the resulting array
      for(var j = 0; j < n; j++) {
        if(a[i] === b[j]) { 
          c[x] = a[i]; x++; // or just c.push(a[i]);
        }
      }
    }
    console.log(c);
    &#13;
    &#13;
    &#13;

    这个例子是用Javascript编写的,并且有点简单,但事实上,它完全与语言无关并能完成工作。