我正在尝试在 C# 中实现快速排序。我在网上找到了与下面的代码非常相似的代码:
public void Sort(List<int> list, int low, int high)
{
int i = low;
int j = high;
IComparable pivot = list[(low + high) / 2];
while (i <= j)
{
while (list[i].CompareTo(pivot) < 0)
{
i++;
}
while (list[j].CompareTo(pivot) > 0)
{
j--;
}
if (i <= j)
{
int temp = list[i];
list[i++] = list[j]; // ??
list[j--] = temp; // ??
}
}
if (j > low)
{
Sort(list, low, j);
}
if (i < high)
{
Sort(list, i, high);
}
}
代码工作正常,但我不明白为什么在交换 list[i] 和 list[j] 中的整数时需要递增和递减 i 和 j。
我是排序算法的新手。我将非常感谢任何见解..