冒泡排序和简单的递归

javascript中 ,冒泡排序也是很重要的一种排序方式,这种方式有固定的格式

 

var arr1=[2,31,33,54,65,-32];
function f1(arr){
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr.length-i-1;j++){ // 这里用length-i-1 是因为每一次比较之后,都可以减少下次的排序次数。
if(arr[j]<arr[j+1]){ //此条决定是按顺序还是倒序排列
var temp=arr[j]; //temp的作用是给予一个中转点,用于临时存储值,方便arr[j]和arr[j+1]调换位置
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}return arr;
}

console.log(f1(arr1));

简单的递归

递归算法是重要的一种算法,所谓递归就是自己调用自己的一种方法,需要注意递归一定要有个出口,也就是一定要有一个结束递归的条件,否则的话,就会产生思想循环。

function getNum(num){
if(num <1){
return 1;
}else{
return getNum(num-1)*num;
}
}

console.log(getNum(3));

以上这个递归就是求得num的阶层 即num!,还有更多递归的方法,需要多多练习。

    //快速排序,利用递归,比较中间值,进行快速排序
var arr=[2,31,33,54,65,32];
function f1(arr){
if(arr.length<1){
return arr;
}
var midIndex=Math.floor(arr.length/2); //获取中间的索引值
var midNum=arr.splice(midIndex,1)[0]; // 获取中间的数值,取出新的数组后,第0个元素即为数字

var right=[];
var left=[];
for(var i=0;i<arr.length;i++){
if(arr[i]<midNum){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}


return f1(left).concat([midNum],f1(right));
}
console.log(f1(arr));


原文地址:https://www.cnblogs.com/yuyufeng/p/5545765.html