我有一个使用quicksort交换随机生成的双号的迷你项目。我必须使用byte来实现它。
file:///home/user/dirOfProject
我的交换方法
然后是我用来做的方法:
public override void Swap(double a, double b)
{
Byte[] data;
fs.Seek(prevNode, SeekOrigin.Begin);
data = BitConverter.GetBytes(a);
fs.Write(data, 0, 8);
fs.Seek(currentNode, SeekOrigin.Begin);
data = BitConverter.GetBytes(b);
fs.Write(data, 0, 8);
}
这可能是什么问题?这些数字并没有按预期排序。无论以何种顺序排列,我只想让它起作用。只有这一行不起作用:public static void QuickSort(DataList items, int left, int right)
{
int i = left, j = right;
double vid = items.Get((left + right) / 2);
while (i <= j)
{
while (items.Get(i) < vid)
i++;
while (items.Get(j) > vid)
j--;
if (i <= j)
{
items.Swap(items.Get(j), items.Get(i));
i++;
j--;
}
}
if (left < j)
QuickSort(items, left, j);
if (i < right)
QuickSort(items, i, right);
}
,我的猜测是交换方法不正确?