Я пытаюсь реализовать quicksort на 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);
}
}
код работает отлично, но я не могу понять, почему я и J необходимости увеличиваться и уменьшаться при замене целых чисел в списке [I] и список [J].
Я новичок в сортировке алгоритмов. Я был бы очень благодарен за любые идеи.
Означает ли это, что список [j] присваивается списку [i], а i увеличивается в одном выражении? –
Спасибо Дуглас; все понятно сейчас .. –