PresentationCore.dll의 .NET Framework에는 여기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
클래스 코드의 버그가 정확히 어디에 있습니까?