function swap(arr,i,j){
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
return arr;
}
function medion(arr,left,right){
let mid = Math.floor((left+right)/2);
if(arr[left] > arr[right]){
arr = swap(arr,left,right);
}
if(arr[mid] > arr[right]){
arr = swap(arr,mid,right);
}
if(arr[left] > arr[mid]){
arr = swap(arr,left,mid);
}
arr = swap(arr,mid,right-1);
return [arr,arr[right-1]];
}
function quickSort(arr){
return quickSortRec(arr,0,arr.length-1) ;
}
function quickSortRec(arr,left,right){
if(left >= right) return arr;
arr = medion(arr,left,right)[0];
let pivot = medion(arr,left,right)[1];
let i = left;
let j = right-1;
while(i < j){
while(arr[++i] < pivot){}
while(arr[--j] > pivot){}
if(i<j){
arr = swap(arr,i,j);
}
}
arr = swap(arr,i,right-1);
arr = quickSortRec(arr,left,i);
arr = quickSortRec(arr,i+1,right);
return arr;
}
let arr=[66,88,12,87,100,5,566,23,2,90,56,35,58,14,75,3,41];
console.log(quickSort(arr));
console