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 相关文章推荐
在textarea中显示html页面的javascript代码
Apr 20 Javascript
js 实现无缝滚动 兼容IE和FF
Jul 15 Javascript
js textarea自动增高并隐藏滚动条
Dec 16 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
Aug 09 Javascript
5个JavaScript经典面试题
Oct 13 Javascript
jQuery验证插件 Validate详解
Nov 20 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
Jul 07 Javascript
CSS+jQuery实现简单的折叠菜单
Dec 20 Javascript
详解JavaScript树结构
Jan 09 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
Sep 28 Javascript
js实现移动端图片滑块验证功能
Sep 29 Javascript
适合后台管理系统开发的12个前端框架(小结)
Jun 29 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
关于Intype一些小问题的解决办法
2008/03/28 PHP
PHP array_push 数组函数
2009/12/26 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
PHP7新增函数
2021/03/09 PHP
splice slice区别
2006/10/09 Javascript
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
2020/02/10 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
python浪漫表白源码
2019/04/05 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
Python 绘制酷炫的三维图步骤详解
2019/07/12 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
python求质数列表的例子
2019/11/24 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
Windows下pycharm安装第三方库失败(通用解决方案)
2020/09/17 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
个人自荐信
2013/12/05 职场文书
优秀公益广告词大全
2014/03/19 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
opencv 分类白天与夜景视频的方法
2021/06/05 Python