我正在尝试对列表框中的 10 个随机数进行快速排序。但我不能在我的随机 iar 上使用该方法,谁能给我一些建议。
按钮后面的代码:
private void btnSort_Click(object sender, EventArgs e)
{
Random r = new Random();
int n = 10;
int[] iar = new int[n];
for (int i = 0; i < iar.Length; i++)
{
iar[i] = r.Next(0, 20);
lb1.Items.Add(iar[i]);
//here is the error i want to fill lb2 with the quicksorted array
// using the quicksort method
Quicksort(iar, 0, iar.Length - 1);
}
for (int i = 0; i < iar.Length; i++)
{
lb2.Items.Add(iar[i]);
}
}
快速排序方法
public static void Quicksort(IComparable[] elements, int left, int right)
{
int i = left, j = right;
IComparable pivot = elements[(left + right) / 2];
while (i <= j)
{
while (elements[i].CompareTo(pivot) < 0)
{
i++;
}
while (elements[j].CompareTo(pivot) > 0)
{
j--;
}
if (i <= j)
{
// Swap
IComparable tmp = elements[i];
elements[i] = elements[j];
elements[j] = tmp;
i++;
j--;
}
}
// Recursive calls
if (left < j)
{
Quicksort(elements, left, j);
}
if (i < right)
{
Quicksort(elements, i, right);
}
}
}
错误:
错误 2 参数 1:无法从 'int[]' 转换为 'System.IComparable[]'
错误 1 'Quicksort.FrmQuicksort.Quicksort(System.IComparable[], int, int)' 的最佳重载方法匹配有一些无效论据
谢谢你看:)