javascript基本算法匯總
本文為大家分享了五個javascript算法,供大家參考,具體內(nèi)容如下
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ù)組內(nèi)的引索是:"+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;//內(nèi)層循環(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("...................這是內(nèi)層循環(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)"+"內(nèi)層第"+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>
以上就是本文的全部內(nèi)容,希望能夠幫助大家更好的學習javascript程序設計。
相關文章
微信小程序開發(fā)之實現(xiàn)食堂點餐系統(tǒng)
這篇文章主要為大家詳細介紹了如何通過微信小程序開發(fā)一個簡單的食堂點餐系統(tǒng),文中的示例代碼講解詳細,感興趣的小伙伴可以和小編一起學習一下2023-01-01location.search在客戶端獲取Url參數(shù)的方法
最近一直在寫html,剛接觸到,感覺挺復雜的。。比如傳參,在.net里可以直接用Request接受,而在html中還要經(jīng)過處理,找了一些資料,寫了個方法。2010-06-06JS插件clipboard.js實現(xiàn)一鍵復制粘貼功能
這篇文章主要介紹了JS插件clipboard.js實現(xiàn)一鍵復制粘貼功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-08-08Array, Array Constructor, for in loop, typeof, instanceOf
雖然在 JavaScript 中數(shù)組是是對象,但是沒有好的理由去使用 `for in` 循環(huán) 遍歷數(shù)組。相反,有一些好的理由不去使用 for in 遍歷數(shù)組。2011-09-09js數(shù)組方法reduce經(jīng)典用法代碼分享
本文給大家整理了很多關于js數(shù)組方法reduce的經(jīng)典代碼片段,能夠讓大家更好的理解reduce的實例用法,一起學習下吧。2018-01-01ES6知識點整理之函數(shù)對象參數(shù)默認值及其解構應用示例
這篇文章主要介紹了ES6知識點整理之函數(shù)對象參數(shù)默認值及其解構應用,結合實例形式分析了ES6函數(shù)對象參數(shù)相關使用技巧,需要的朋友可以參考下2019-04-04js重寫alert事件(避免alert彈框標題出現(xiàn)網(wǎng)址)
這篇文章主要給大家介紹了關于js重寫alert事件的相關資料,這樣可以避免alert彈框標題出現(xiàn)網(wǎng)址的情況,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12