我很难理解在分区函数中没有返回数组的情况下传递和操作数组的方式。分区函数只返回partitionIndex,但无论如何都要更改数组。任何人都可以解释
function QuickSort(arr,start,end,type){
console.log("_____________________________ "+type+" "+start+" "+end+" arr: "+arr);
if(start < end){
var pivotIndex = Partition(arr,start,end);
console.log("pivotIndex: ",pivotIndex);
QuickSort(arr,start,pivotIndex-1,'inner1');
QuickSort(arr,pivotIndex+1,end,'inner2');
}
return arr;
}
function Partition(arr,start,end){
console.log("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.log("#####",arr)
swap(arr,partitionIndex,end)
console.log("@@@@@",arr)
return partitionIndex;
}
function swap(arr,firstIndex,secondIndex){
var temp = arr[firstIndex];
arr[firstIndex] = arr[secondIndex];
arr[secondIndex] = temp;
}
console.log(QuickSort(arr,start,end,'main'));