Мне трудно понять, как массив передается и управляется без возвращаемого массива в функции разделения. функция секционирования возвращает только partitionIndex, но массив все равно изменяется. кто-нибудь может объяснить
function QuickSort(arr,start,end,type){
console.info("_____________________________ "+type+" "+start+" "+end+" arr: "+arr);
if (start < end){
var pivotIndex = Partition(arr,start,end);
console.info("pivotIndex: ",pivotIndex);
QuickSort(arr,start,pivotIndex-1,'inner1');
QuickSort(arr,pivotIndex+1,end,'inner2');
}
return arr;
}
function Partition(arr,start,end){
console.info("Partition");
var pivot = arr[end];
var partitionIndex = start;
for(var x = start; x < end; x++ ){
if (arr[x] <= pivot){
swap(arr,x,partitionIndex)
partitionIndex++;
}
}
console.info("#####",arr)
swap(arr,partitionIndex,end)
console.info("@@@@@",arr)
return partitionIndex;
}
function swap(arr,firstIndex,secondIndex){
var temp = arr[firstIndex];
arr[firstIndex] = arr[secondIndex];
arr[secondIndex] = temp;
}
console.info(QuickSort(arr,start,end,'main'));
Верно. Чтобы быть более конкретным, передается копия ссылки.
См. stackoverflow.com/questions/518000/…



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Массивы в JS «передаются по ссылке», поэтому, если вы передаете массив функции, и она манипулирует им, оригинал также изменяется.