如何使函数返回排序数组的结果?c#quicksort字符串数组类
class quiksort
{
public static char[] qsort(char[] items)
{
return qs(items, 0, items.Length - 1);
}
// A recursive version of Quicksort for characters.
static char[] qs(char[] items, int left, int right)
{
int i, j;
char x, y;
i = left; j = right;
x = items[(left + right)/2];
do
{
while ((items[i] < x) && (i < right)) i++;
while ((x < items[j]) && (j > left)) j--;
if (i <= j)
{
y = items[i];
items[i] = items[j];
items[j] = y;
i++; j--;
}
} while (i <= j);
if (left < j)
{
return qs(items, left, j);
}
if (i < right)
{
return qs(items, i, right);
}
}
}
错误表示不是所有的代码路径都返回一个值吗?这是什么意思
你有两个if条件,但如果没有满足条件,那么在这种情况下你没有返回任何东西。 –
是的,我刚才看到它。我刚刚返回了空值。嗯,但没有输出显示当我运行代码 – arukiri123
...现在,你有一个排序算法,考虑使用它不仅字符。使其通用。 :-)然后你的方法签名可能看起来像'static T [] qs(T [] items,int left,int right)其中T:IComparable '。你只需要用'T'和'''用'IComparable'中的'CompareTo()'方法来替换'char'。 –
mvo