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 相关文章推荐
客户端脚本中常常出现的一些问题和调试技巧
Jan 09 Javascript
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
Apr 12 Javascript
说说JSON和JSONP 也许你会豁然开朗
Sep 02 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
Jun 05 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
May 08 Javascript
JQuery CheckBox(复选框)操作方法汇总
Apr 15 Javascript
js css+html实现简单的日历
Jul 14 Javascript
JS常用函数和常用技巧小结
Oct 15 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
Nov 29 Javascript
vue实现点击选中,其他的不选中方法
Sep 05 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
Apr 22 Javascript
返回上一个url并刷新界面的js代码
Sep 12 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上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
php定时计划任务的实现方法详解
2013/06/06 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
go和python变量赋值遇到的一个问题
2017/08/31 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
python框架中flask知识点总结
2018/08/17 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
公司行政经理岗位职责
2013/12/24 职场文书
国际商贸专业自荐信
2014/06/09 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
2015年政风行风工作总结
2015/04/21 职场文书
人事任命书范本
2015/09/21 职场文书
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏