zoukankan      html  css  js  c++  java
  • 冒泡排序 与二分法 -递归

    var sum = 200;
    for(var i= 0;i<6;i++)
    {
        sum = parseInt(sum/2)-1
    }
    alert(sum);
     
    
    例题2:公园里有一些桃子子,猴子每天吃掉一半以后扔掉一个,第6天的时候发现还剩下1个桃子,问开始有几个桃子?
          
    
    var sum = 1;
    for(var i = 0;i<6;i++)
    {
        sum = (sum+1)*2;
    }
    alert(sum);
     
    
    使用函数解决例题2
    
    复制代码
     function ShuLiang(n)//用来返回第n天的数量
    {
        if(n == 6)//已知第6天
        {
             return 1;//桃子数量为1
        }
        var sl = (ShuLiang(n+1)+1)*2;//第n天的桃子数量=(下一天的桃子数量+1)*2
        return sl;//return第n天的数量
    }
    alert(ShuLiang(0));    
    复制代码
    函数功能:给一个天数,返回该天数的桃子的数量。最主要的是下一天的桃子数量怎么求,函数实现过程是
    
               想要求第1天的桃子数量就需要2天桃子数量;
    
          想要求第2天的桃子数量就需要3天桃子数量;
    
        想要求第3天的桃子数量就需要4天桃子数量;
    
        想要求第4天的桃子数量就需要5天桃子数量;
    
        想要求第5天的桃子数量就需要6天桃子数量;
    
        而第6天的桃子的数量已经知道了,是1。进而5-4-3-2-1-0的数量的桃子就能用公示算出来了。

    <script type="text/javascript">

    //var attr = [1,8,26,4,15,3,7,42,9];

    //对数组元素进行排序
    //冒泡排序
    /*8 6 4 5 3 7 2 9 1 8
    8 6 5 4 7 3 9 2 1 7
    8 6 5 7 4 9 3 2 1 6
    8 6 7 5 9 4 3 2 1 5
    8 7 6 9 5 4 3 2 1 4
    8 7 9 6 5 4 3 2 1 3
    8 9 7 6 5 4 3 2 1 2
    9 8 7 6 5 4 3 2 1 1 */

    //两个相邻的元素进行比较,满足条件元素互换
    //进行比较的轮数是数组的长度减一

    //定义一个交换使用的中间变量
    //var zj = 0;

    //控制比较的轮数
    /*for(var i=0;i<attr.length-1;i++)
    {
    //控制每轮比较的次数
    for(var j=0;j<attr.length-1-i;j++)
    {
    //如果下一个元素大于当前元素
    if(attr[j]<attr[j+1])
    {
    //互换
    zj = attr[j];
    attr[j] = attr[j+1];
    attr[j+1] = zj;

    }
    }
    }*/

    //alert(attr[0]);

    //attr.sort();

    //alert(attr[3]);


    //在数组里面查找数据
    var attr = [1,2,3,4,5,6,7,8,9];

    //要查找的值
    var v = 0;


    //循环遍历的方式
    /*var sy = -1;
    for(var i=0;i<attr.length;i++)
    {
    if(attr[i]==v)
    {
    sy = i;
    }
    }

    if(sy == -1)
    {
    alert("没找到数据");
    }
    else
    {
    alert("该数据在数组里面的索引为:"+sy);
    }*/

    //二分法查找数据

    //最小索引
    var minsy = 0;
    var maxsy = attr.length-1;
    var midsy ;

    //循环比较
    while(true)
    {
    //计算中间索引
    midsy = parseInt((minsy+maxsy)/2);

    //比较中间值和用户的值
    //判断中间索引的值是否等于用户要查找的值
    if(attr[midsy] == v)
    {
    //如果等于,就退出循环,找到了数据
    break;
    }

    //判断是否只剩下两个数据
    if(midsy == minsy)
    {
    //判断两个数据中的另外一个是否等于用户查找的值
    if(attr[midsy+1]==v)
    {
    //找到了值,退出循环
    midsy = midsy+1;
    break;
    }
    else
    {
    //没有找到值,退出循环
    midsy = -1;
    break;
    }
    }
    //用来改范围
    if(attr[midsy]>v)
    {
    maxsy = midsy;
    }
    else
    {
    minsy = midsy;
    }
    }

    alert(midsy);

    </script>

  • 相关阅读:
    R语言统计词频 画词云
    Bootstrap抽样(自展法)
    基于adt-bundle-windows-x86的android开发环境搭建
    逆分布函数法生成随机数(指数分布) R语言实现
    2016-ccf-data-mining-competition 搜狗用户画像构建
    算法第四版 在Linux 中调用Algs4库
    解决Ubuntu Chrome浏览器很卡不响应的问题
    Linux下安装系统清理软件 BleachBit 1.4
    C语言编程-9_4 字符统计
    C++调用Matlab函数求特征值
  • 原文地址:https://www.cnblogs.com/benpaodegegen/p/5885320.html
Copyright © 2011-2022 走看看