C# 类来对泛型列表进行排序
我有简单的类来排序通用列表。我正在使用快速排序。你能告诉我为什么不行吗?(没有任何答案,程序一直在运行) 我主要有:C# 类来对泛型列表进行排序,c#,sorting,C#,Sorting,我有简单的类来排序通用列表。我正在使用快速排序。你能告诉我为什么不行吗?(没有任何答案,程序一直在运行) 我主要有: Console.WriteLine("Sort"); EnumerableAlgorithm.Sort<int>(l, (x, y) => x.CompareTo(y)); Console.WriteLine("Sort"); foreach (int i in l) Console.WriteLine(i);
Console.WriteLine("Sort");
EnumerableAlgorithm.Sort<int>(l, (x, y) => x.CompareTo(y));
Console.WriteLine("Sort");
foreach (int i in l)
Console.WriteLine(i);
Console.WriteLine(“排序”);
枚举算法排序(l,(x,y)=>x.CompareTo(y));
控制台。写入线(“排序”);
foreach(int i in l)
控制台写入线(i);
我只看到第一个“排序”。我不知道为什么它不起作用。但若我在main之前使用函数Quicksort并调用它,那个么它的排序为
Program.QuickSort<T>(list, comparison, 0, list.Count-1);
Program.QuickSort(列表,比较,0,列表,计数-1);
它正在工作。我将感谢你的帮助。提前谢谢。在我的班级下面进行分类:
public static class EnumerableAlgorithm
{
public static void Sort<T>(List<T> list, Comparison<T> comparison)
{
QuickSort<T>(list, comparison, 0, list.Count-1);
}
public static void QuickSort<T>(List<T> array, Comparison<T> comparison, int left, int right)
{
var i = left;
var j = right;
var pivot = array[(left + right) / 2];
while (i < j)
{
while (comparison(array[i],pivot) < 0) i++;
while (comparison(array[i], pivot) > 0) j--;
if (i <= j)
{
// swap
var tmp = array[i];
array[i++] = array[j]; // ++ and -- inside array braces for shorter code
array[j--] = tmp;
}
if (left < j) EnumerableAlgorithm.QuickSort(array,comparison, left, j);
if (i < right) EnumerableAlgorithm.QuickSort(array, comparison, i, right);
}
}
}
公共静态类枚举算法
{
公共静态无效排序(列表、比较)
{
快速排序(列表、比较、0、列表、计数-1);
}
公共静态void快速排序(列表数组、比较、左整数、右整数)
{
var i=左;
var j=右;
var pivot=array[(左+右)/2];
而(i0)j--;
如果(i改变线
while(比较(数组[i],pivot)>0)j--;
到
while(比较(数组[j],枢轴)>0)j--;
(将[i]更改为[j])
您的代码进入了无休止的循环您知道列表已经有了排序方法吗?