我创建了一个类来快速排序一个int数组,现在我试图从程序中调用该类,但我不断收到错误,该类如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace QuicksortSimpel
{
class Class1
{
public static void Quicksort(IComparable[] elements,int left, int right)
{
//Define i and j and pick an pivot to compare other numbers
int i = left, j = right;
IComparable pivot = elements[left + (left + right) / 2];
//Compare numbers and then compare to pivot
while (i <= j)
{
while (elements[i].CompareTo(pivot) < 0)
{
i++;
}
while (elements[j].CompareTo(pivot) > 0)
{
j--;
}
if (i <= j)
{
// Switch
IComparable tmp = elements[i];
elements[i] = elements[j];
elements[j] = tmp;
i++;
j--;
}
}
// repeat
if (left < j)
{
Quicksort(elements, left, j);
}
if (i < right)
{
Quicksort(elements, i, right);
}
}
}
}
我试着这样称呼它:
numbers = Class1.Quicksort(numbers);
我得到的错误是:
方法quicksort没有重载需要1个参数。
答案 0 :(得分:4)
这是因为Class1.Quicksort();
接受了三个参数而你正在传递1.而且它也没有返回任何内容,因此numbers = Class1.Quicksort();
无效。
您可以重载或设置可选/默认参数(感谢Silo)。
public static void Quicksort(IComparable[] elements,int left = 0, int right = 0)
或
public static void Quicksort(IComparable[] elements)
{
QuickSort(elements, 0,0);
}
答案 1 :(得分:0)
你得到这个编译器错误,因为类方法QuickStart()期望三个参数,同时你只提供一个参数。
你的类不是静态的,为什么你用类名访问它?您需要创建Class1
的对象,然后在该对象上调用sort方法。我还注意到你将这个方法的返回值赋给某个变量但是在函数定义中你没有返回任何东西?