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 習題總結(持續更新)JavaScript
- 2019 Vue 面試題彙總(持續更新中...)Vue面試題
- 前端面試經典題目彙總(持續更新中)前端面試
- python 系列文章彙總(持續更新…)Python
- 前端學習資源彙總(持續更新)前端
- hadoop 日常問題彙總(持續更新)Hadoop
- Deep learning 資料彙總--持續更新
- LeetCode Animation 題目圖解彙總(持續更新中...)LeetCode圖解
- 【C++】C++常見面試題彙總,持續更新中…C++面試題
- TCP/IP協議重要知識點彙總(持續更新中)TCP協議
- Kotlin學習資料彙總(持續更新...)Kotlin
- 持續更新關於ORACLE X$檢視彙總Oracle
- 多程式多執行緒程式設計彙總(持續更新中)執行緒程式設計
- LeetCode All in One 題目講解彙總(持續更新中...)LeetCode
- Unity打包安卓專案問題彙總(持續更新)Unity安卓
- Golang優秀開源專案彙總(持續更新。。。)Golang
- 不錯的技術部落格彙總(持續更新)
- PHP面試題總結-持續更新中PHP面試題
- 前端演算法類面試總結(持續更新...)前端演算法面試
- 國產資料庫考試資料彙總(持續更新)資料庫
- iOS第三方類庫彙總【持續更新】iOS
- 前端程式設計輔助網站彙總(將持續更新)前端程式設計網站
- Android學習資源大全集彙總(github持續更新)AndroidGithub
- 陣列總結,持續更新~陣列
- 前端面試題總結——HTML(持續更新中)前端面試題HTML
- Dom中高big 事件總結(持續更新中)事件
- git使用、持續更新中Git
- 小菜菜3月前端面試記錄彙總---持續更新前端面試
- C#/.NET/.NET Core學習視訊彙總(持續更新ing)C#
- LeetCode演算法系列,持續更新中...LeetCode演算法
- 快應用開發教程及資源彙總,長期維護,持續更新中。。。
- 【機器學習】【深度學習】【人工智慧】【演算法工程師】面試問題彙總(持續更新)機器學習深度學習人工智慧演算法工程師面試
- Modern Javascript Cheatsheet 簡體中文版(持續更新中)JavaScript
- Go 動態彙總(持續跟進)Go
- 前端佈局總結(持續更新)前端
- 【前端面試】Vue面試題總結(持續更新中)前端Vue面試題
- 資料分析中常用小函式彙總【持續更新,個人筆記。。。】函式筆記