javascript基本算法匯總
本文為大家分享了五個(gè)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>這個(gè)值在數(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)結(jié)束還未發(fā)現(xiàn)的話 則返回"不存在"; } //2.實(shí)例練習(xí) var arr=[2,4,6,23,53,545,65,3,24,5,3,6]; //聲明一個(gè)數(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("此時(shí)low的值是:"+low); }else{ high=mid-1;//如果要查找的值小于二分值則high=mid-1; console.log("此時(shí)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;//聲明一個(gè)緩存變量 var count_outer=0;//外層循環(huán)計(jì)數(shù) var count_inner=0;//內(nèi)層循環(huán)計(jì)數(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里的值放在后面那個(gè)位置 } console.log(".......................................外層第"+count_outer+"次循環(huán)"+"內(nèi)層第"+count_inner+"次循環(huán)"+"后的數(shù)組排序結(jié)果是"+arr) } } return "最終排序后的數(shù)組是:["+arr+"]....一共循環(huán)了"+count_inner+"次"; } console.log(bubbleSort()); //控制臺(tái)輸出 </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 是一個(gè)類似數(shù)組的對(duì)象 包含函數(shù)中傳入的參數(shù) 他有一個(gè)屬性callee,它是一個(gè)指針 指向擁有這個(gè)arguments對(duì)象的函數(shù)也就是factorial } } var fac=factorial;//不帶括號(hào)的函數(shù)名是一個(gè)指向該函數(shù)的指針 所有fac現(xiàn)在也指向這個(gè)階乘函數(shù) alert(fac(3));//6 </script> </body> </html>
5.輸出奇偶數(shù)控制
<html> <head> <title>只輸出奇數(shù)或者偶數(shù)項(xiàng)</title> </head> <body> <script> var ck = true;//全局變量 function oddOreven(num) { //num為0或1 控制輸出結(jié)果 是奇數(shù)還是偶數(shù) for (var i = 0; i < 30; i++) { if (ck) { ck = false; //如果ck為true 讓其等于false alert(i + num); } else { ck = true; } } } //調(diào)用 oddOreven(0); //偶數(shù) oddOreven(1) //奇數(shù) </script> </body> </html>
以上就是本文的全部?jī)?nèi)容,希望能夠幫助大家更好的學(xué)習(xí)javascript程序設(shè)計(jì)。
相關(guān)文章
微信小程序開發(fā)之實(shí)現(xiàn)食堂點(diǎn)餐系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何通過微信小程序開發(fā)一個(gè)簡(jiǎn)單的食堂點(diǎn)餐系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以和小編一起學(xué)習(xí)一下2023-01-01JavaScript實(shí)現(xiàn)頁面高亮操作提示和蒙板
這篇文章主要介紹了JavaScript實(shí)現(xiàn)頁面高亮操作提示和蒙板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01location.search在客戶端獲取Url參數(shù)的方法
最近一直在寫html,剛接觸到,感覺挺復(fù)雜的。。比如傳參,在.net里可以直接用Request接受,而在html中還要經(jīng)過處理,找了一些資料,寫了個(gè)方法。2010-06-06JS插件clipboard.js實(shí)現(xiàn)一鍵復(fù)制粘貼功能
這篇文章主要介紹了JS插件clipboard.js實(shí)現(xiàn)一鍵復(fù)制粘貼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08Array, Array Constructor, for in loop, typeof, instanceOf
雖然在 JavaScript 中數(shù)組是是對(duì)象,但是沒有好的理由去使用 `for in` 循環(huán) 遍歷數(shù)組。相反,有一些好的理由不去使用 for in 遍歷數(shù)組。2011-09-09js數(shù)組方法reduce經(jīng)典用法代碼分享
本文給大家整理了很多關(guān)于js數(shù)組方法reduce的經(jīng)典代碼片段,能夠讓大家更好的理解reduce的實(shí)例用法,一起學(xué)習(xí)下吧。2018-01-01ES6知識(shí)點(diǎn)整理之函數(shù)對(duì)象參數(shù)默認(rèn)值及其解構(gòu)應(yīng)用示例
這篇文章主要介紹了ES6知識(shí)點(diǎn)整理之函數(shù)對(duì)象參數(shù)默認(rèn)值及其解構(gòu)應(yīng)用,結(jié)合實(shí)例形式分析了ES6函數(shù)對(duì)象參數(shù)相關(guān)使用技巧,需要的朋友可以參考下2019-04-04js重寫alert事件(避免alert彈框標(biāo)題出現(xiàn)網(wǎng)址)
這篇文章主要給大家介紹了關(guān)于js重寫alert事件的相關(guān)資料,這樣可以避免alert彈框標(biāo)題出現(xiàn)網(wǎng)址的情況,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12