如何使函數返回排序數組的結果?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