js基础

[前端学习]js语法部分学习笔记,第四天

2017-09-28  本文已影响0人  印象rcj

JS内置数组对象操作

找到数组中某个值出现的所有位置

统计数组中每个元素出现的次数

使用递归进行数组快排

/*使用递归快排的原理是把数组中的第一个值取出来作为标杆,然后遍历数组并让它来比较,比它小的放到一个左边数组,比它大的放到一个右边数组
然后左边和右边的数组分别使用同样的方法(递归实现)来进行比较,一直比较到最后,把标杆和左右数组连接起来就是排序好的数组了。*/
var arr = [30,10,29,58,24,45,38,69,73,8];
function arrSort(arr) {
//设置一个递归结束的条件,防止无限递归
//当递归到最后,左右数组都没有值了,说明原数组只剩一个值,直接连接就行了
if(arr.length == 0) {
return [];
}
//创建存放标杆值的临时变量和左右两个数组
var temp = arr[0];
var left = [];
var right = [];
for(var i=1; i<arr.length; i++) {
//如果当前值比标杆值大放入右边数组,反之把标杆值放入左数组
if( temp < arr[i] ) {
right.push( arr[i] );
} else {
left.push( arr[i] );
}
}
/*排序过程:在递归过程中,会先执行arrSort(left)并多次执行比较左右分组,然后又再次递归,直到里面的左右分组没有值,
就返回空值,然后根据分组顺序左+temp+右来连接,这样的结果顺序一定是正确的
然后再执行arrSort(right),执行过程与上面相同,最终返回正确顺序的结果。
最后连接最初的temp,就完成了快排*/
var newArr = arrSort(left).concat(temp, arrSort(right));
return newArr;
}
var arr1 = arrSort(arr);
console.log(arr1);

上一篇 下一篇

猜你喜欢

热点阅读