快速排序
写法一:
var example=[1,4,3,8,9,6,2] function quickSort(arr){ if(arr.length<=1){ return arr; } var left=[],right=[],current=arr.splice(0,1); for(let i=0;i<arr.length;i++){ if(arr[i]<current){ left.push(arr[i]) }else{ right.push(arr[i]) } } return quickSort(left).concat(current,quickSort(right)); } console.log(quickSort(example)); // => [1, 2, 3, 4, 6, 8, 9]
写法二:
var arr = [1, 4, 3, 8, 9, 6, 2]; function quickSort(arr,l,r){ if(l < r){ var i = l, j = r, x = arr[i]; while(i<j){ while(i<j && arr[j]>x) j--; if(i<j) //这里用i++,被换过来的必然比x小,赋值后直接让i自加,不用再比较,可以提高效率 arr[i++] = arr[j]; while(i<j && arr[i]<x) i++; if(i<j) //这里用j--,被换过来的必然比x大,赋值后直接让j自减,不用再比较,可以提高效率 arr[j--] = arr[i]; } arr[i] = x; quickSort(arr, l, i-1); quickSort(arr, i+1, r); } } quickSort(arr, 0, arr.length - 1); console.log(arr); // => [1, 2, 3, 4, 6, 8, 9]
浙公网安备 33010602011771号