編集:質問を編集しました。
私の質問はひどく尋ねられたと思います。それは本当にあったはずです:
List<T>.Sort
ソートされたリストで最悪の場合のパフォーマンスが低下しますか?
答えは「いいえ」のようです。
いくつかのテストを行いましたが、並べ替えられたリストは、ランダム化されたリストよりも並べ替えに必要な比較が少ないようです:https ://gist.github.com/3749646
const int listSize = 1000;
const int sampleSize = 10000;
var sortedList = Enumerable.Range(0,listSize).ToList();
var unsortedList = new List<int>(sortedList);
var sortedCount = 0;
sortedList.Sort((l,r) => {sortedCount++; return l - r;});
//sortedCount.Dump("Sorted");
// Returns: 10519
var totalUnsortedComparisons = 0;
for(var i = 0; i < sampleSize; i++)
{
var unsortedCount = 0;
unsortedList.Shuffle();
unsortedList.Sort((l,r) => {unsortedCount++; return l - r;});
totalUnsortedComparisons += unsortedCount;
}
//(totalUnsortedComparisons / sampleSize).Dump("Unsorted");
// Returns: 13547
もちろん、@dlevは有効なポイントを上げます。リストがソートされているかどうかわからない状況に陥ることを決して許すべきではありませんでした。
この問題を回避するために、代わりにSortedListを使用するように切り替えました。