<html>
<script type="text/javascript">
var arrInit = [5,1,3,7,4,3,4];
document.write(arrInit + "<br>");
var pivotSort = function(arr)
{
//1.如果长度小于等于1,那么直接返回结果
if(arr.length <= 1) { return arr; }
var pivotIndex = Math.floor(arr.length / 2); //获取基准值的索引
var pivotValue = arr[pivotIndex]; //获取基准值的值
var pivotArray = []; //声明并初始化 基准值的数组
var left = [];
var right = [];
//2.遍历数组
for(var i=0;i<arr.length;i++)
{
if(arr[i] < pivotValue)
{
left.push(arr[i]);
}
else if(arr[i] > pivotValue)
{
right.push(arr[i]);
}else if(arr[i] == pivotValue)
{
pivotArray.push(arr[i]); //如果被遍历的数组有其他的元素与基准值相同,那么都添加到基准值的数组
}
}
//3.递归调用基准排序函数,最终会返回排序之后的数组
return pivotSort(left).concat(pivotArray,pivotSort(right));
}
document.write(pivotSort(arrInit));
</script>
</html>
参考:http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html
------- 补充 ---------------
直接复制粘贴阮一峰的源码,会出现unexpected token unlegal错误?
答:1)原因是复制粘贴网上的代码,会出现空格bug
2)中英文:标点符号bug
3)
后来自己手写,出现了Uncaught RangeError: Maximum call stack size exceeded错误?
答:匹配结果后及时return 退出 (参考:http://blog.csdn.net/dong123dddd/article/details/22160095)