通用快速排序算法

本文关键字:算法 快速排序 | 更新日期: 2023-09-27 17:55:12

我是这个网站的新手,也是一个初学者程序员。我得到了一个快速排序方法,它将对一组通用对象进行排序。我正在使用内置的compareTo方法,但是当我调用我的方法时,它不会编译。快速排序方法采用 T 项数组以及 int left 和 int right。我不知道如何调用我的方法,当我让它工作时,我的数组没有排序。谁能给我任何帮助?我真的很难理解,互联网上的大多数网站对于我的知识来说都有些复杂:(这是代码:

    namespace QuickSort2
   {
    class Program
    {
     private void QuickSort<T>(T[] items, int left,  int right) where T: IComparable
     {
        int i, j;
        i = left; j = right;
        IComparable pivot = items[left];
        while (i <= j)
        {
            for (; (items[i].CompareTo(pivot) < 0) && (i.CompareTo(right) < 0); i++); 
            for (; (pivot.CompareTo(items[j]) < 0) && (j.CompareTo(left) > 0); j--); 
             if (i <= j) 
            swap(ref items[i++], ref items[j--]); 
        } 
             if (left < j) QuickSort<T>(items, left,  j); 
             if (i < right) QuickSort<T>(items, i, right); 
    }
     static void swap<T>(ref T x, ref T y)
    {
      //swapcount++;
        T temp = x;
        x = y;
        y = temp;
    }
    static void Main(string[] args)
    {
        IComparable[] array1 = { 3,5,7,8,1,2 };

        foreach (int s in array1)
        {
            Console.WriteLine(" {0} ", s);
        }
        Console.ReadKey();
        Console.WriteLine("Sorted version");
        foreach (int x in array1)
        {
            QuickSort(array1, 0, array1.Length - 1);
            Console.WriteLine(" {0} ", x);
        }
        Console.ReadKey();
    }

    }
   }

通用快速排序算法

你的代码很好,但你实际上并没有调用QuickSort方法......(编辑:在您编辑问题后不再正确...

QuickSort(array1, 0, array1.Length - 1);

您还需要将QuickSort方法设为静态,以便能够从静态方法Main调用它。

private static void QuickSort<T>(T[] items, int left,  int right) where T: IComparable