请补全JavaScript代码,要求将数组参数中的数字从小到大进行排序并返回该数组。
注意:
1. 数组元素仅包含数字
2. 请优先使用快速排序方法
const _quickSort = array => { // 补全代码 //第一要素 结束条件 定义返回条件 如果数组的长度小于1 那么就返回就行了 if(array.length<=1){ return array } //第二要素 函数目的 寻找比中间数小的放做数组 大的放右数组 //先将找到数组的中间位置的下标 let mid = Math.floor(array.length/2); //在元素数组中删除这个元素。 并保存这个数 var midNumber = array.splice(mid,1)[0]; //定义比中间位置数值小的数组 (比数组中间位置元素小的放在leftArr) let leftArr = [] //定义比中间位置数值小的数组 (数组中间位置元素大的放在rightArr) let rightArr = [] for(let i = 0 ; i<array.length; i++){ if(midNumber>array[i]){ leftArr.push(array[i]) }else{ rightArr.push(array[i]) } } //第三要素 等价关系 //左边leftArr midNumber rightArr 将这三个数组链接起来。midNumber是这一个数 let leftSort= _quickSort(leftArr) let midSort = [midNumber] let rightSort = _quickSort(rightArr) return leftSort.concat(midSort,rightSort) //return _quickSort(leftArr).concat([midNumber],_quickSort(rightArr)) }
<!DOCTYPE html> <html> <head> <meta charset=utf-8> </head> <body> <script type="text/javascript"> const _quickSort = array => { if(array.length <= 1) return array // 补全代码 let pivotIndex = Math.floor(array.length / 2) let pivot = array.splice(pivotIndex,1)[0] let left = [] let right = [] for(let i = 0; i < array.length; i++) { if(array[i] < pivot) { left.push(array[i]) } else if(array[i] >= pivot) { right.push(array[i]) } } return _quickSort(left).concat([pivot],_quickSort(right)) } </script> </body> </html>
<script> const _quickSort = (array) => { // return array.sort() if(array.length <= 1) { return array; } let left = [] let right = [] let middle = array[0] for(let i = 0; i < array.length; i++){ if(array[i] < middle){ left.push(array[i]) }else if(array[i] > middle){ right.push(array[i]) } } left = _quickSort(left) right = _quickSort(right) left.push(middle) return left.concat(right) } const result = _quickSort([0,-1,1,-2,2]) console.log(result) </script>
// 补全代码 if(array.length <= 1) return array let middleIndex = Math.floor(array.length /2) let middle = array.splice(middleIndex,1)[0] let left = [] let right = [] for(let i =0;i<array.length;i++) { array[i] < middle ? left.push(array[i]) : right.push(array[i]) } return [..._quickSort(left),middle,..._quickSort(right)]
const _quickSort = array => { // 补全代码 正经八百 快速排序 不让过是吧 if (array.length < 2) return array const left = [], right = [] const mid = array.splice(Math.floor(array.length / 2), 1)[0] for (let i = 0; i < array.length; i++) { if (array[i] < mid) left.push(array[i]) else right.push(array[i]) } return _quickSort(left).concat(mid, _quickSort(right)) }
<!DOCTYPE html> <html> <head> <meta charset=utf-8> </head> <body> <script type="text/javascript"> const _quickSort = array => { // 补全代码 //使用快速排序: 先找一个比较顺序的标准,然后比他大的放后面,比他小放前面 //先定义一个单趟排序函数 function sglSort(arr){ if(arr.length==1){ return arr }else{ //定义一个base let base =parseInt(arr.length/2) let key = base; let baseNum = arr[base] let left = 0; let right = arr.length-1; //取中间值为基准值 //left<right时就一直循环 while(left<right){ while(arr[left]<=baseNum &&left!=right){ left++; } //交换left与base的位置 arr[base] = arr[left] base = left while(arr[right]>=baseNum&&left!=right){ right--; } arr[base] = arr[right] base = right } base = left arr[base]=baseNum; let leftArr = arr.splice(0,base) let rightArr = arr.splice(1,) //判断是否出现了空串 if(leftArr.length!=0&&rightArr.length!=0){ return [...sglSort(leftArr),baseNum,...sglSort(rightArr)]; }else if(leftArr.length==0&&rightArr.length!=0){ return [baseNum,...sglSort(rightArr)]; }else{ return [...sglSort(leftArr),baseNum]; } } } return sglSort(array); } </script> </body> </html>
if(array.length<=1)return array let mid=Math.floor(array.length/2) let midValue=array.splice(mid,1)[0] let left=[],right=[] for(let a of array){ a<midValue?left.push(a):right.push(a) } return _quickSort(left).concat(midValue,_quickSort(right))
const _quickSort = array => { // 补全代码 return array.sort() }
const _quickSort = array => { // 补全代码 // 快速排序步骤: // 1. 任意选择一个基准 // 2. 所有小于基准的元素一道基准的左边,大于基准的元素一道基准的右边 // 3. 对基准左边和右边的两个子集不断重复前两步,直到每个子集只剩下一个元素 if (array.length <= 1) { return array; } // 获取每次基准点的索引值 const pivotIndex = Math.floor(array.length / 2); const pivot = array.splice(pivotIndex, 1)[0]; let left = []; let right = []; for (var i = 0; i < array.length; i++) { if (array[i] < pivot) { left.push(array[i]); } else { right.push(array[i]); } } left = _quickSort(left); right = _quickSort(right); return left.concat(pivot).concat(right); }
const _quickSort = array => { // 补全代码 if(array.length <= 1 ) return array; const left = []; const right = []; let pivot = array[0]; for(let i = 1; i<array.length;i++) { if(pivot < array[i]) { left.push(array[i]) } else { right.push(array[i]) } } return [..._quickSort(left),pivot,..._quickSort(right)] }
const _quickSort = array => { // 补全代码 var start=0; var end=array.length-1; var base = qSort(start,end,array); qSort(start,base-1,array); qSort(base+1,end,array); return array; } function qSort(left,right,arr){ let pivot = arr[left];//0 while(left<right){ while(arr[right] > pivot && left < right)right--; arr[left]=arr[right]; while(arr[left] < pivot && left <right)left++; arr[right]=arr[left]; } arr[left]=pivot; return left; }