<script>
// 首先定义一个函数,传入参数为数组
var quickSort=function(arr){
// 如果数组长度小于1证明已经是最小的数组了
if(arr.length<=1){
return arr;
}
// 设置基准是数组中最中间的元素
var pivotIndex=Math.floor(arr.length/2);
// 这句是阮一峰老师在网上写的,有人提出为什么要用splice方法
var pivot=arr.splice(pivotIndex,1)[0];
var leftArr=[],rightArr=[];
for(var i=0;i<arr.length;i++){
if(arr[i]<pivot){
leftArr.push(arr[i]);
}
else
{
rightArr.push(arr[i]);
}
}
// 递归使用这个函数
return quickSort(leftArr).concat(pivot,quickSort(rightArr));
};
var arr=[1,50,6,-1,9,345,48,9,68,454];
console.log(quickSort(arr));
/*我试用了不用splice直接赋值的方法,代码如下
var pivot=arr[pivotIndex];
// 设置左右数组
var leftArr=[],rightArr=[];
for(var i=0;i<arr.length;i++){
if(arr[i]<pivot){
leftArr.push(arr[i]);
}
else if(arr[i]>pivot)
{
rightArr.push(arr[i]);
}
}
// 递归使用这个函数
return quickSort(leftArr).concat(pivot,quickSort(rightArr));
这样排序在有重复数字的情况下会删除重复数字,所以不要使用
*/
</script>