PresentationCore.dllの.NETFrameworkには、PriorityQueue<T>
コードがここにある汎用クラスがあります。
並べ替えをテストするための短いプログラムを作成しましたが、結果は良くありませんでした。
using System;
using System.Collections.Generic;
using System.Diagnostics;
using MS.Internal;
namespace ConsoleTest {
public static class ConsoleTest {
public static void Main() {
PriorityQueue<int> values = new PriorityQueue<int>(6, Comparer<int>.Default);
Random random = new Random(88);
for (int i = 0; i < 6; i++)
values.Push(random.Next(0, 10000000));
int lastValue = int.MinValue;
int temp;
while (values.Count != 0) {
temp = values.Top;
values.Pop();
if (temp >= lastValue)
lastValue = temp;
else
Console.WriteLine("found sorting error");
Console.WriteLine(temp);
}
Console.ReadLine();
}
}
}
結果:
2789658
3411390
4618917
6996709
found sorting error
6381637
9367782
ソートエラーがあり、サンプルサイズを大きくすると、それに比例してソートエラーの数が増加します。
私は何か間違ったことをした?そうでない場合、PriorityQueue
クラスのコードのバグは正確にどこにありますか?