通用快速排序算法
本文关键字:算法 快速排序 | 更新日期: 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