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

 

目录
相关文章
|
2月前
|
算法 JavaScript 前端开发
彩票中奖率的真相:用 JavaScript 看透彩票背后的随机算法(下)
至于分发?我们可以参考一下市面上已有的一些概念做一下对比,下面是笼统的一个网络服务器的TPS预估值,也就是说彩票服务器在1秒内可以处理的最大请求数:
|
2月前
|
数据采集 算法 JavaScript
彩票中奖率的真相:用 JavaScript 看透彩票背后的随机算法(上)
原本这篇文章是打算叫「假如我是彩票系统开发者」,但细想一下,如果在文章中引用太多的 JavaScript 的话,反而不是那么纯粹,毕竟也只是我的一厢情愿,彩票开发也不全如本文所讲,有所误导的话便也是得不偿失了。
|
1月前
|
缓存 JavaScript 算法
Vue.js中的diff算法:让虚拟DOM更高效
Vue.js中的diff算法:让虚拟DOM更高效
|
3月前
|
算法 JavaScript
|
3月前
|
算法 JavaScript
|
3月前
|
算法 JavaScript
|
3月前
|
算法 JavaScript
JS算法-二叉树的右视图
JS算法-二叉树的右视图
|
3月前
|
算法 JavaScript
|
3月前
|
算法 JavaScript
JS算法-颠倒二进制位
JS算法-颠倒二进制位
|
3月前
|
算法 JavaScript