JS中利用递归实现数组快速排序

用递归实现数组快速排序,思路:
1、先找出数组中 中间的数
2、创建左边、右边的空数组
3、将数组中的每个数与中间的数字相比较,如果小,就放到新创建的左边的数组中,如果大,就放到新创建的右边的数组中;
4、如果数组被分到只有一个数的时候 函数结束 返回数组
5、递归

function quickSort(arr) {   //创建函数
	var mid = arr.length % 2 == 0 ? arr.length / 2 : (arr.length + 1) / 2; //取出数组中中间的数字
	var left = [];		//创建左边的空数组
	var right = [];		//创建右边的空数组
	if(arr.length < 2)
		return arr;		//递归的结束条件
	}
	for(var i = 0; i < arr.length; i++) {    //循环遍历 
		if(mid != i && arr[i] < arr[mid]) {      // 不让数组中 中间的数 与自己进行比较 
	   		left.push(arr[i]) //如果数字比中间数小 就放到左边的数组
		}
	 	if(mid != i && arr[i] > arr[mid]) {
	   		right.push(arr[i])  //如果数字比中间数大 就放到右边的数组
	 	}
	}
	return fn(left).concat(arr[mid]).concat(fn(right)) //递归 将左边的数组与右边的数组再进行划分 
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值