Я проходил быструю сортировку, когда обнаружил эту проблему.В моем коде, когда я использую 'pivot', чтобы переместить pivot в правильное место вместо 'arr [high]', я получаю неправильный ответ (это в закомментированных строках).
хотя pivot равен arr [high] и нигде не переназначен
Я пытался визуализировать его с помощью печати, но не могу понять, как это сделать.
{
int pivot = arr[high];
int l = low-1;
for(int r = low; r<high; r++)
{
if(arr[r]<=pivot)
{
l++;
int temp = arr[r];
arr[r]=arr[l];
arr[l]=temp;
}
}
int t = arr[l+1];
arr[l+1]=arr[high];
arr[high]=t;
/*
arr[l+1]=pivot;
pivot=t;
*/
System.out.println("pivot="+pivot+" high="+arr[high]);
return l+1;
}
Это вывод при использовании arr [high].
2 3 3 4 1
Your Output is:
pivot=1 high=1
pivot=2 high=2
pivot=3 high=3
1 2 3 3 4 0
Это вывод при использовании pivot для свопинга.
2 3 3 4 1
Your Output is:
pivot=2 high=1
pivot=3 high=1
pivot=3 high=1
pivot=4 high=1
1 1 1 1 1 0