企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 原理 对于一个数组,从中随机选择一个数字(一般选取第一个,当然也可以取中间的数,奇数与偶数取值不同,或者最后一个数为基准,这个不做要求),然后把整个数组中小于它的元素放在左侧,大于它的元素放在右侧,然后递归执行。 快速排序分三步: 1. 选基准:在数据结构中选择一个元素作为基准(pivot) 2. 划分区:参照基准元素值的大小,划分无序区,所有小于基准元素的数据放入一个区间,所有大于基准元素的数据放入另一区间,分区操作结束后,基准元素所处的位置就是最终排序后它应该所处的位置 3. 递归:对初次划分出来的两个无序区间,递归调用第 1步和第 2步的算法,直到所有无序区间都只剩下一个元素为止 # 代码 ``` // 取中间一个元素作为基准值 let 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, length = array.length; i < length; i++) { if (array[i] < pivot) { left.push(array[i]) } else { right.push(array[i]) } } return quickSort(left).concat(pivot, quickSort(right)) } // 取第一个元素作为基准值 let quickSort = array => { if (array.length <= 1){ return array } let pivot = array[0] let left = [] let right = [] for(let i = 1; i < array.length; i++) { if (array[i] > pivot) { right.push(array[i]) } else { left.push(array[i]) } } return quickSort(left).concat(pivot, quickSort(right)) } /*console.log(quickSort([9, 4, 5, 1, 3, 2, 6, 8, 7]))*/ ```