0

オブジェクト全体のさまざまなメソッドのパフォーマンスを記録するものを書いています。最も遅い時間のトップ 10 を見つけたいです。したがって、たとえば私の場合は 10 のように、固定された並べ替えられたリストのようなものが必要です。したがって、新しい時間を取得するたびに、それを挿入するだけで順序付けされます。これは修正されるので、5 回目を挿入した後 (以下の例では 5 に制限されていると仮定)、リストは大きくなりませんが、リストに挿入され、最小値が削除されます。

例えば

var topTen = new XXX<double>(5);

XXX.Insert(1);
XXX.Insert(3);
XXX.Insert(2);
XXX.Insert(6);
XXX.Insert(4);
XXX.Insert(5);

/*
topTen[0] is 6
topTen[1] is 5
topTen[2] is 4
topTen[3] is 3
topTen[4] is 2
*/

私はそれについて何かを書くつもりでしたが、.net に既に何かあるかどうか疑問に思っていました。

4

2 に答える 2

0

これを試してください(テストされていません):

int listLength = 5;

List<int> list = new List<int>(listLength+1);

void VerifyTime(int time) {
  list[listLength] = time;
  var i = listLength;
  while (listLength>0  &&  list[listLength] < list[listLength-1])
    swap(list, listLength, listLength-1);
}

void swap (List<int> l, int a, int b) {
  var temp = l[a];
  l[a] = l[b];
  l[b] = temp;
}

ListLength の値が小さい場合は、問題なく動作するはずです。

于 2013-03-22T22:09:21.287 に答える