相干自创文章:https://juejin.im/entry/57d90…
<!–疾速排序–>
function quickSort(arr){
//假如数组个数为1个,则直接返回数组自身
if(arr.length<=1){
return arr
}
//猎取数组中心值的索引
var quickIndex = Math.floor(arr.length/2);
//quick取到数组中心谁人值,[0]取值,不加[0],则打印出来是一个数组,比方[9],加[0],则打印出来是一个值,比方9;
var quick = arr.splice(quickIndex,1)[0];
//定义两个空数组,大于中心值放到right,小于中心值放到left
var left = [];
var right = [];
for(var i=0,len=arr.length;i<len;i++){
if(arr[i]<quick){
left.push(arr[i])
}else{
right.push(arr[i])
}
}
return quickSort(left).concat(quick,quickSort(right));
}
var arr = [3,5,7,2,11,77]
document.write(quickSort(arr));//2,3,5,7,11,77
<!–数组去重–>
var arr1 = [1,2,2,3,3,4,5,6,6],
arr2 = [];
for(var i = 0;i < arr1.length;i++){
if(arr2.indexOf(arr1[i]) < 0){
arr2.push(arr1[i])
}
}
document.write(arr2);//1,2,3,4,5,6
冒泡排序道理:让数组中确当前项和后一项举行比较,假如当前项大于后一项,我们让二者交流位置(小->大)
每一轮夙昔到后两两比较,虽然不一定完成末了的排序结果,然则能够把当前最大的放在末端
详细比较的轮数:ary.length-1 数组有多长,我们只需要把总长度-1个数离别放在末端,即可完成末了的排序
第一轮比较5次:一共六个,不需要和本身比较
第二轮比较4次:一共六个,不必和本身比,也不必和第一轮放在末端的谁人最大值比
第三轮比较3次:
...<br/>
每一轮比较的次数:ary.length - 1(不必和本身比)-当前已实行的论数(实行一轮向末端放一个最大值,这些值不需要在比较)
a=12 b=13 a和b交流值
第一种方法:
c=a
a=b
b=c
第二种方法:
a=a+b;25
b=a-b;12
a=a-b;13
function bubble(ary){
for(var i=0;i<ary.length-1;i++){
for(var j=0;j<ary.length-1-i;j++){
if(ary[j]>ary[j+1]){
var temp = ary[j];
ary[j] = ary[j+1];
ary[j+1] = temp;
}
}
}
return ary;
}
var ary = [5,3,1,57,89,9];
console.log(bubble(ary));
假如是从大到小排序,直接return ary.reverse();
<!–reduce完成数组乞降–>
Array.prototype.sum = function(){
var cur = 0;
return this.reduce((prev,next)=>{
return cur = prev + next;
})
return cur;
}
var ary = [1,2,3,4];
console.log(ary.sum());//10
function sumFun(cur){
var sumTot = 0;
return cur.reduce((prev,next) => {
return sumTot = prev + next;
},0);
return sumTot;
}
var num = [1,2,3]
sumFun(num);//6