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

 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)