1

たとえば、最大数 N の場合、N = 3 とします。

私はaを持っていて、bを取得したい

 a = np.array([12.3,15.4,1,13.3,16.5])
 b = ([15.4,13.3,16.5])

前もって感謝します。

4

1 に答える 1

1

さて、これに対する私の見解:

  1. 元の配列のコピーを作成します。
  2. コピーした配列を並べ替えて、n 個の最大の数値を見つけます。
  3. 元の配列を調べて、その数値を前のステップからの上位 n の数値と比較した後、必要な数値を結果の配列に移動します。

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);

この例は Javascript で書かれており、やや単純ですが、実際には言語にとらわれず、機能します。

于 2017-05-09T14:00:41.747 に答える