javascript基本算法汇总
来源: 阅读:616 次 日期:2016-07-21 15:16:45
温馨提示: 小编为您整理了“javascript基本算法汇总”,方便广大网友查阅!

本文为大家分享了五个javascript算法,供大家参考,具体内容如下

1. 线性查找

<!doctype html>

<html lang="en">

<head>

 <meta charset="UTF-8">

 <title>线性查找</title>

</head>

<body>

 <p>数组为:[2,4,6,23,53,545,65,3,24,5,3,6]</p>

 <p>输入要查的值:<input type="text" id="serch" onchange="search_index(this.value)"><p>

 <p>这个值在数组的位置是:<span id="val"></span><p>

 <script>   

  //1.声明查找函数

  //Arr为数组,x为要搜索的值

   function search(Arr,x){

    for(var i=0; i<Arr.length; i++){

     if(Arr[i]==x){

      return i; //返回x在数组中的位置;

     }

    }

    return "不存在"; //循环结束还未发现的话 则返回"不存在";

   }

   //2.实例练习

   var arr=[2,4,6,23,53,545,65,3,24,5,3,6]; //声明一个数组  

   function $$(id){

    return document.getElementById(id);

   }

  function search_index(value){

    var val=getX(arr,value)

    $$("val").innerHTML=val;

  }

   function getX(Arr,x){

    var count=0;

    console.log("循环执行了:");

    for(var i=0; i<Arr.length;i++){

     count++

     console.log(count);//输出循环执行的次数

     if(Arr[i]==x){

      return i;

     }

    }

    return "该值不存在";

   }  

 </script>

</body>

</html>

2.二分查找

<!doctype html>

<html lang="en">

<head>

 <meta charset="UTF-8">

 <title>二分查找温故</title>

</head>

<body>

 <script>

 //二分查找值适用于已经排好序的数组中

 //二分就是逢中查找 步骤较少

 var arr=[-13,2,4,6,8,12,34,35,45,56,57,88,110,234,239,342];//有序数组

 function binarySearch(arr,x){

  var low=0,high=arr.length-1;

  var count=0;

  while(low<=high){

   count++;

   console.log("这是第"+count+"次循环");

   var mid=Math.floor((low+high)/2);

   if(arr[mid]==x){

    console.log("x所在数组内的引索是:"+mid);

    return mid;

   }

   if(arr[mid]<x){//如果要查找的值大于二分值则low=mid+1;

    low=mid+1;

    console.log("此时low的值是:"+low);

   }else{

    high=mid-1;//如果要查找的值小于二分值则high=mid-1;

    console.log("此时high的值是:"+high);

   }

  }

 }

binarySearch(arr,45);

 </script>

</body>

</html>

3.冒泡排序

<!doctype html>

<html lang="en">

<head>

 <meta charset="UTF-8">

 <title>javascript冒泡排序</title>

</head>

<body>

 <script>

  var arr=new Array(34,-3,43,67,12,44,21,34,5,645,64,3,43,23,25);

  function bubbleSort(){

   var temp;//声明一个缓存变量

   var count_outer=0;//外层循环计数

   var count_inner=0;//内层循环计数

   for(var i=0; i<arr.length;i++){//第一层循环

    count_outer++;

    console.log("这是外层循环的第"+count_outer+"次");

    for(var j=arr.length;j>0;j--){//第二层循环

     count_inner++;

     console.log("...................这是内层循环的第"+count_inner+"次");

     if(arr[j-1]<arr[j-2]){//判断后面一值如果小于前面一值

      temp=arr[j-2];//那么将前面的值存放在temp里面

      arr[j-2]=arr[j-1];//然后将后面一直放在前面值的位置

      arr[j-1]=temp;//在把temp里的值放在后面那个位置

     }

     console.log(".......................................外层第"+count_outer+"次循环"+"内层第"+count_inner+"次循环"+"后的数组排序结果是"+arr)

    }

   }

   return "最终排序后的数组是:["+arr+"]....一共循环了"+count_inner+"次";

  }

console.log(bubbleSort()); //控制台输出

 </script>

</body>

</html>

4.阶乘

<!doctype html>

<html>

<head>

 <meta charset="UTF-8">

 <title>阶乘</title>

</head>

<body>

 <script>

 //created in 2014-04-30 

 //factorial function

  function factorial(num){

   if(num<=1){

    return 1;

   }else{

    return num*arguments.callee(num-1);//arguments 是一个类似数组的对象 包含函数中传入的参数 他有一个属性callee,它是一个指针 指向拥有这个arguments对象的函数也就是factorial

   }

  }

  var fac=factorial;//不带括号的函数名是一个指向该函数的指针 所有fac现在也指向这个阶乘函数

  alert(fac(3));//6

 </script>

</body>

</html>

5.输出奇偶数控制

<html>

 <head>

  <title>只输出奇数或者偶数项</title>

 </head>

 <body>

  <script>

  var ck = true;//全局变量

  function oddOreven(num) { //num为0或1 控制输出结果 是奇数还是偶数

   for (var i = 0; i < 30; i++) {

    if (ck) {

     ck = false; //如果ck为true 让其等于false

     alert(i + num);

    } else {

     ck = true;

    }

   }

  }

  //调用

  oddOreven(0); //偶数

  oddOreven(1) //奇数

  </script>

 </body>

</html>

以上就是本文的全部内容,希望能够帮助大家更好的学习javascript程序设计。

更多信息请查看网络编程
手机网站地址:javascript基本算法汇总
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map