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

本文為大家分享了五個javascript算法,供大家參考,具體內容如下

1. 線性查找

<!doctype html>

<html lang="en">

<head>

 <meta charset="UTF-8">

 <title>線性查找</title>

</head>

<body>

 <p>數(shù)組為:[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>這個值在數(shù)組的位置是:<span id="val"></span><p>

 <script>   

  //1.聲明查找函數(shù)

  //Arr為數(shù)組,x為要搜索的值

   function search(Arr,x){

    for(var i=0; i<Arr.length; i++){

     if(Arr[i]==x){

      return i; //返回x在數(shù)組中的位置;

     }

    }

    return "不存在"; //循環(huán)結束還未發(fā)現(xiàn)的話 則返回"不存在";

   }

   //2.實例練習

   var arr=[2,4,6,23,53,545,65,3,24,5,3,6]; //聲明一個數(shù)組  

   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("循環(huán)執(zhí)行了:");

    for(var i=0; i<Arr.length;i++){

     count++

     console.log(count);//輸出循環(huán)執(zhí)行的次數(shù)

     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>

 //二分查找值適用于已經(jīng)排好序的數(shù)組中

 //二分就是逢中查找 步驟較少

 var arr=[-13,2,4,6,8,12,34,35,45,56,57,88,110,234,239,342];//有序數(shù)組

 function binarySearch(arr,x){

  var low=0,high=arr.length-1;

  var count=0;

  while(low<=high){

   count++;

   console.log("這是第"+count+"次循環(huán)");

   var mid=Math.floor((low+high)/2);

   if(arr[mid]==x){

    console.log("x所在數(shù)組內的引索是:"+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;//外層循環(huán)計數(shù)

   var count_inner=0;//內層循環(huán)計數(shù)

   for(var i=0; i<arr.length;i++){//第一層循環(huán)

    count_outer++;

    console.log("這是外層循環(huán)的第"+count_outer+"次");

    for(var j=arr.length;j>0;j--){//第二層循環(huán)

     count_inner++;

     console.log("...................這是內層循環(huán)的第"+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+"次循環(huán)"+"內層第"+count_inner+"次循環(huán)"+"后的數(shù)組排序結果是"+arr)

    }

   }

   return "最終排序后的數(shù)組是:["+arr+"]....一共循環(huán)了"+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 是一個類似數(shù)組的對象 包含函數(shù)中傳入的參數(shù) 他有一個屬性callee,它是一個指針 指向擁有這個arguments對象的函數(shù)也就是factorial

   }

  }

  var fac=factorial;//不帶括號的函數(shù)名是一個指向該函數(shù)的指針 所有fac現(xiàn)在也指向這個階乘函數(shù)

  alert(fac(3));//6

 </script>

</body>

</html>

5.輸出奇偶數(shù)控制

<html>

 <head>

  <title>只輸出奇數(shù)或者偶數(shù)項</title>

 </head>

 <body>

  <script>

  var ck = true;//全局變量

  function oddOreven(num) { //num為0或1 控制輸出結果 是奇數(shù)還是偶數(shù)

   for (var i = 0; i < 30; i++) {

    if (ck) {

     ck = false; //如果ck為true 讓其等于false

     alert(i + num);

    } else {

     ck = true;

    }

   }

  }

  //調用

  oddOreven(0); //偶數(shù)

  oddOreven(1) //奇數(shù)

  </script>

 </body>

</html>

以上就是本文的全部內容,希望能夠幫助大家更好的學習javascript程序設計。

更多信息請查看網(wǎng)絡編程
易賢網(wǎng)手機網(wǎng)站地址:javascript基本算法匯總

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

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