JS实现快速排序(2种方法)

1、用i和j两个指针


2、用一个指针判断,大的放在右边,小的数放在左边

<!DOCTYPE html>
<html>
<head>
	<title>quickSort</title>
	<meta charset="utf-8"/>
	<script type="text/javascript">
	var arr=[12,20,5,16,15,1,30,45,23,9];
	var start = 0;
	var end = arr.length;
	console.log('arr:' +arr);
	function quickSort(arr,low,high){
		var key=arr[low];
		var start=low;
		var end=high;
		while(end>start){
			while(end>start&&arr[end]>=key) end--;
			if(arr[end]<=key){
				var temp = arr[end];
				arr[end]=arr[start];
				arr[start] = temp;
			}
			while(end>start&&arr[start]<=key) start++;
			if(arr[start]>=key){
				var temp = arr[start];
				arr[start]=arr[end];
				arr[end]=temp;
			}
		}
		if(start>low) quickSort(arr,low,start-1);
		if(end<high) quickSort(arr,end+1,high);
	}
	quickSort(arr,start,end);
	console.log('After arr:' +arr);
	</script>


	<script type="text/javascript">
		function sort(elements){
			if(elements.length<=1){
				return elements;
			}
			var piIndex = Math.floor(elements.length/2);//取数组中间值
			console.log(piIndex);
			var pi = elements.splice(piIndex,1)[0];//???在中间值的地方插入元素
			var left = [];
			var right = [];
			for(var i =0;i<elements.length;i++){
				if(elements[i]<pi){
					left.push(elements[i]);
				} else {
					right.push(elements[i]);
				}
			}
			return sort(left).concat([pi],sort(right));
		}
		var elements=[12,20,5,16,15,1,30,45,23,9];
		document.write(sort(elements));
	</script>
</head>
<body>

</body>
</html>


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值