これは私のGnomeソートアルゴリズムです。何らかの理由で使用すると、システムがハングします。その部分と関係があるのではないかと思いますが、comparer.Compare(x,y) == 1
よくわかりません。
static public void GnomeSort<T>(IList<T> list)
{
GnomeSort<T>(list, Comparer<T>.Default);
}
static public void GnomeSort<T>(IList<T> list, IComparer<T> comparer)
{
bool stillGoing = true;
while (stillGoing)
{
stillGoing = false;
for (int i = 1; i < list.Count; )
{
T temp;
T x = list[i - 1];
T y = list[i];
if (comparer.Compare(x,y) == 1)
i++;
else
{
temp = x;
x = y;
y = temp;
i--;
if (i == 0)
i = 1;
stillGoing = true;
}
}
}
}