javascript实现快速排序
快速排序一般是在数组中先找一个基准元素,将数组中剩余的元素依次与基准元素进行对比,比基本元素小的放一个新数组,同样地,比基准元素大的放一个新数组,然后分别对新数组重复进行上述操作,直到新数组的元素只剩一个,此时便完成了排序。
实现代码:
function quickSort(arr){
// 由于使用Math.floor()向下取整方法获取基准元素索引,会出现arr.length为0情况,因此如果数组长度小于等于1时,则直接返回原数组
if(arr.length <= 1){
return arr
}
// 寻找基准元素,一般取数组最中间的元素
var benchmarkIndex = Math.floor(arr.length/2)
var benchmark = arr.splice(benchmarkIndex, 1)[0]
var leftArr = []
var rightArr = []
for(var i = 0; i < arr.length; i++){
// 比基准元素小的放在leftArr中,比基准元素大的放在rightArr中
if(arr[i] < benchmark){
leftArr.push(arr[i])
}else {
rightArr.push(arr[i])
}
}
// 通过递归最终完成排序并返回结果
return quickSort(leftArr).concat(benchmark, quickSort(rightArr))
}
测试:
quickSort([3, 1, 7, 5, 2])
// [1, 2, 3, 5, 7]
快速排序属于不稳定排序方法