标签:bsp turn 元素 方法 执行 logs ice 开始 连接
<script> var stu = [9,8,5,4,6,2,3,1,7,10]; //创建数组 console.log(stu); //打印 function stort(stu){ //定义函数传入数组 if(stu.length>1) //判断数组的长度大于1才执行循环 { var c = parseInt((stu.length+1)/2); //数组长度加1除以二 var center = stu.splice(c,1)[0]; //找到数组中间位置的值 var left=[],right=[]; //定义左右空数组 for(var i=0;i<stu.length;i++) //开始循环遍历 { if(stu[i]<center) { left.push(stu[i]); } //如果小于数组中间位置的值就放入left数组中 else { right.push(stu[i]); } //负责大于数组中间位置的值就放入right数组中 } return stort(left).concat(center,stort(right)) //返回重新排序left数组在连接中间位置的值和right数组 }else{ return stu; //否则返回stu数组 } } stu = stort(stu); //重新排序并保存,因为concat方法不会改变原数组 console.log(stu); //控制台打印输出 </script>
1.在数组中选择中数组长度+1 /2 然后下取整获得中间的元素作为基准
2.对数组进行遍历,小于中间的元素都移到左边的数组,大于中间的元素都移到右边的数组
3.对中间 左边和右边的两个子集,不断重复前两步,直到所有子集只剩下一个元素为止
4.然后用concat方法连接左右数组和中间的值
标签:bsp turn 元素 方法 执行 logs ice 开始 连接
原文地址:http://www.cnblogs.com/luoyuxin/p/6602703.html