javascript基本算法匯總
來源:易賢網 閱讀:779 次 日期:2016-07-21 15:16:45
溫馨提示:易賢網小編為您整理了“javascript基本算法匯總”,方便廣大網友查閱!

本文為大家分享了五個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基本算法匯總
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
未满十八18勿进黄网站免费看