您的位置:首页 > Web前端 > JavaScript

JS实现快速排序

2012-09-08 23:26 435 查看
为数组实现一个原型方法,使之实现对数组的快速排序

<script type="text/javascript">
<!--快速排序-->

Array.prototype.quickSort = function(){
quickSortHelper(this, 0, this.length-1);

function quickSortHelper(arr, start, end){
if(start < end){
//par为哨兵
var par = partition(arr, start, end);
//递归调用快排
arguments.callee(arr, start, par-1 );
arguments.callee(arr, par+1, end);
}
}

function partition(arr, start, end){
var pivot = arr[end];
var i = start;
for(var j=start; j<end; j++){
if(arr[j] < pivot){
swap(arr, i, j);
i++;
}
}
swap(arr, i, end);
return i;
}

function swap(arr, a, b){
var tmp = arr[a];
arr[a] = arr[b];
arr[b] = tmp;
}
}

var arr = [1, 10, 8, 9, 22, 35, 17, 21];
arr.quickSort();

for(var i=0; i<arr.length; i++){
document.write(arr[i] +" ");
}
</script>


输出为:

1 8 9 10 17 21 22 35
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: