zoukankan      html  css  js  c++  java
  • 冒泡排序和简单的递归

    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));


  • 相关阅读:
    [APIO 2009] Atm
    Codeforces518 D. Ilya and Escalator
    [POJ2096] Collecting bugs
    [ZOJ3329] One Person Game
    [LightOJ1038] Race to 1 Again
    「NOI2003」逃学的小孩
    [HAOI2006] 旅行
    ☆ [POJ2411] Mondriaan's Dream 「状压DP」
    「POJ3311」Hie with the Pie
    「乘法逆元」 学习笔记
  • 原文地址:https://www.cnblogs.com/yuyufeng/p/5545765.html
Copyright © 2011-2022 走看看