javascript算法汇总(持续更新中)-阿里云开发者社区

开发者社区> frontman> 正文

javascript算法汇总(持续更新中)

简介: 1. 线性查找 1 doctype html> 2 3 4 5 线性查找 6 7 8 9 数组为:[2,4,6,23,53,545,65,3,24,5,3,6] 10 输入要查的值: 11 这个值在数...
+关注继续查看

 1. 线性查找

 1 <!doctype html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>线性查找</title>
 6 </head>
 7 <body>
 8 
 9     <p>数组为:[2,4,6,23,53,545,65,3,24,5,3,6]</p>
10     <p>输入要查的值:<input type="text" id="serch" onchange="search_index(this.value)"><p>
11     <p>这个值在数组的位置是:<span id="val"></span><p>
12 
13 
14 
15     <script>            
16         //1.声明查找函数
17         //Arr为数组,x为要搜索的值
18          function search(Arr,x){
19              for(var i=0; i<Arr.length; i++){
20                  if(Arr[i]==x){
21                      return i;  //返回x在数组中的位置;
22                  }
23              }
24              return "不存在"; //循环结束还未发现的话 则返回"不存在";
25          }
26       
27          //2.实例练习
28          var arr=[2,4,6,23,53,545,65,3,24,5,3,6];  //声明一个数组     
29          function $$(id){
30              return document.getElementById(id);
31          }
32 
33         function search_index(value){
34                var val=getX(arr,value)
35                $$("val").innerHTML=val;
36         }
37 
38             function getX(Arr,x){
39                 var count=0;
40                 console.log("循环执行了:");
41                 for(var i=0; i<Arr.length;i++){
42                   count++
43                     console.log(count);//输出循环执行的次数
44                     if(Arr[i]==x){
45                         return i;
46                     }
47                 }
48                 return "该值不存在";
49             }        
50                  
51         
52     </script>
53 </body>
54 </html>
javascript算法-线性查找

 2.二分查找

 1 <!doctype html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>二分查找温故</title>
 6 </head>
 7 <body>
 8     
 9     <script>
10     //二分查找值适用于已经排好序的数组中
11     //二分就是逢中查找 步骤较少
12     var arr=[-13,2,4,6,8,12,34,35,45,56,57,88,110,234,239,342];//有序数组
13     
14     function binarySearch(arr,x){
15         var low=0,high=arr.length-1;
16         var count=0;
17         while(low<=high){
18             count++;
19             console.log("这是第"+count+"次循环");
20             var mid=Math.floor((low+high)/2);
21             if(arr[mid]==x){
22                 console.log("x所在数组内的引索是:"+mid);
23                 return mid;
24             }
25             if(arr[mid]<x){//如果要查找的值大于二分值则low=mid+1;
26 
27                 low=mid+1;
28                 console.log("此时low的值是:"+low);
29             }else{
30                 high=mid-1;//如果要查找的值小于二分值则high=mid-1;
31                 console.log("此时high的值是:"+high);
32             }
33 
34         }
35 
36     }
37 binarySearch(arr,45);
38     </script>
39 </body>
40 </html>
javascript算法-二分查找

3.冒泡排序

 1 <!doctype html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>javascript冒泡排序</title>
 6 </head>
 7 <body>
 8     <script>
 9         var arr=new Array(34,-3,43,67,12,44,21,34,5,645,64,3,43,23,25);
10 
11         function bubbleSort(){
12             var temp;//声明一个缓存变量
13             var count_outer=0;//外层循环计数
14             var count_inner=0;//内层循环计数
15 
16             for(var i=0; i<arr.length;i++){//第一层循环
17                 count_outer++;
18                 console.log("这是外层循环的第"+count_outer+"次");
19                 for(var j=arr.length;j>0;j--){//第二层循环
20                     count_inner++;
21                     console.log("...................这是内层循环的第"+count_inner+"次");
22                     if(arr[j-1]<arr[j-2]){//判断后面一值如果小于前面一值
23                         temp=arr[j-2];//那么将前面的值存放在temp里面
24                         arr[j-2]=arr[j-1];//然后将后面一直放在前面值的位置
25                         arr[j-1]=temp;//在把temp里的值放在后面那个位置
26                     }
27                   console.log(".......................................外层第"+count_outer+"次循环"+"内层第"+count_inner+"次循环"+"后的数组排序结果是"+arr)
28                 }
29             }
30             return "最终排序后的数组是:["+arr+"]....一共循环了"+count_inner+"次";
31 
32         }
33         
34 console.log(bubbleSort()); //控制台输出
35 
36     </script>
37 </body>
38 </html>
javascript算法-冒泡排序

 4.阶乘

 1 <!doctype html>
 2 <html>
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>阶乘</title>
 6 </head>
 7 <body>
 8     <script>
 9     //created in 2014-04-30 
10     //factorial function
11 
12         function factorial(num){
13             if(num<=1){
14                 return 1;
15             }else{
16                 return num*arguments.callee(num-1);//arguments 是一个类似数组的对象 包含函数中传入的参数 他有一个属性callee,它是一个指针 指向拥有这个arguments对象的函数也就是factorial
17             }
18         }
19 
20         var fac=factorial;//不带括号的函数名是一个指向该函数的指针 所有fac现在也指向这个阶乘函数
21         alert(fac(3));//6
22 
23     </script>
24 </body>
25 </html>
javascript算法-阶乘

 5.输出奇偶数控制

 1 <html>
 2     <head>
 3         <title>只输出奇数或者偶数项</title>
 4     </head>
 5     <body>
 6         <script>
 7         var ck = true;//全局变量
 8         function oddOreven(num) { //num为0或1 控制输出结果 是奇数还是偶数
 9             for (var i = 0; i < 30; i++) {
10                 if (ck) {
11                     ck = false; //如果ck为true 让其等于false
12                     alert(i + num);
13                 } else {
14                     ck = true;
15                 }
16             }
17         }
18         //调用
19         oddOreven(0); //偶数
20         oddOreven(1)  //奇数
21         </script>
22     </body>
23 </html>
View Code

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JavaScript ~ 排序算法(选择排序)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link type="text/css" rel="stylesheet" href="style/flex.
943 0
Java面试通关要点汇总集
基础篇 基本功 面向对象的特征 final, finally, finalize 的区别 int 和 Integer 有什么区别 重载和重写的区别 抽象类和接口有什么区别 说说反射的用途及实现 说说自定义注解的场景及实现 HTTP 请求的 GET 与 ...
1306 0
Android Java 框架基础[知识点汇总]
学习android的过程中,把整个框架的基础结构牢记很重要,特此摘录了一些这个框架的一些基础知识,在使用的过程中按照这个框架学习,事半功倍。 开发过程中参考JDK的文档和android的sdk文档可以清楚遇到的很多问题,遇到问题是现在这两个文档中一般都能找到原因(安装sdk的文档参考http://www.
801 0
MaxCompute数据仓库在更新插入、直接加载、全量历史表三大算法中的数据转换实践
2018“MaxCompute开发者交流”钉钉群直播分享,由阿里云数据技术专家彬甫带来以“MaxCompute数据仓库数据转换实践”为题的演讲。本文首先介绍了MaxCompute的数据架构和流程,其次介绍了ETL算法中的三大算法,即更新插入算法、直接加载算法、全量历史表算法,再次介绍了在OLTP系统中怎样处理NULL值,最后对ETL相关知识进行了详细地介绍。
4742 0
Java集合类源码分析汇总
Java集合类基础:http://www.cnblogs.com/hzmark/archive/2012/12/17/CollectionBase.html ArrayList源码分析:http://www.
805 0
javascript 一个关于时间排序的算法(一个页面多个倒计时排序)
上周要做一个活动页面 秒杀列表页 需要一个时间的算法排序 自己琢磨了半天想了各种算法也没搞出来,后来问了下一个后台的php同学 他写了个算法给我看了下 ,刚开始看的时候觉得这就是个纯算法,不能转化成页面的dom效果,可是再看了两遍发现可以 于是我就改了改 实现了 不禁感叹 确实蛮赞的 于是就博一客;...
850 0
学生党如何拿到阿里技术offer: 《阿里巴巴常考面试题及汇总答案(Java方向)上篇》
今天为大家分享不是前辈们的面试经历而是面试题目,这篇题目可谓良心之作,只不过原文链接已经失效,在这里还是谢谢原作者。
50913 0
+关注
52
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载