gpt4 book ai didi

c# - 通用快速排序算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:21 31 4
gpt4 key购买 nike

我是这个网站的新手,也是一名初级程序员。我得到了一个快速排序方法,可以对一组通用对象进行排序。我正在使用内置的 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

关于c# - 通用快速排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22761331/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com