JS实现快速排序

为数组实现一个原型方法,使之实现对数组的快速排序


<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


你可能感兴趣的:(JS实现快速排序)