Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类来对泛型列表进行排序_C#_Sorting - Fatal编程技术网

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])

您的代码进入了无休止的循环

您知道列表已经有了排序方法吗?