javasc快排

<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>

  

posted @ 2017-03-09 19:21  老夫代码复制粘贴  阅读(216)  评论(0)    收藏  举报