javascript基本算法汇总


Posted in Javascript onMarch 09, 2016

本文为大家分享了五个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 相关文章推荐
node.js实现BigPipe详解
Dec 05 Javascript
JavaScript中的this关键字使用方法总结
Mar 13 Javascript
初识Javascript小结
Jul 16 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
May 25 Javascript
用js写的一个路由(简单实例)
Sep 24 Javascript
BootStrap中Table分页插件使用详解
Oct 09 Javascript
javascript基础练习之翻转字符串与回文
Feb 20 Javascript
Three.js利用性能插件stats实现性能监听的方法
Sep 25 Javascript
vue项目中实现图片预览的公用组件功能
Oct 26 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
Nov 25 Javascript
详解vuex之store源码简单解析
Jun 13 Javascript
javascript之Object.assign()的痛点分析
Mar 03 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
Jan 28 #Javascript
javascript获取wx.config内部字段解决微信分享
Mar 09 #Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
Mar 09 #Javascript
jquery实现文本框textarea自适应高度
Mar 09 #Javascript
分享12个实用的jQuery代码片段
Mar 09 #Javascript
详解JavaScript正则表达式之分组匹配及反向引用
Mar 09 #Javascript
javascript html5移动端轻松实现文件上传
Mar 27 #Javascript
You might like
用PHP编写PDF文档生成器
2006/10/09 PHP
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
深入剖析JavaScript中的枚举功能
2014/03/06 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
js实现的牛顿摆效果
2015/03/31 Javascript
详解ES6中的let命令
2020/04/05 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
Django如何使用redis作为缓存
2020/05/21 Python
Python嵌入C/C++进行开发详解
2020/06/09 Python
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
咨询公司各岗位职责
2013/12/02 职场文书
高一生物教学反思
2014/01/17 职场文书
旺仔牛奶广告词
2014/03/20 职场文书
学生请假条
2014/04/11 职场文书
产品设计开发计划书
2014/05/07 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
工作作风懒散检讨书
2014/10/29 职场文书