国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS常見算法詳解

2024-05-06 15:10:37
字體:
來源:轉載
供稿:網友

算法是程序的靈魂,一個優秀前端工程師對算法也是要有所了解的,本文總結了我們在開發、面試中經常會遇到的基礎算法,使用原生JS實現,未必是最優解,可以互相探討。

為了便于查看,簡單分下類,本文也會持續更新。

排序算法

1. 冒泡排序

function bubbleSort(arr){ var i = j = 0; for(i=1;i<arr.length;i++){ for(j=0;j<=arr.length-i;j++){ var temp = 0; if(arr[j]>arr[j+1]){ temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } }}

2. 快速排序

function quickSort(arr,l,r){ if(l < r){ var i = l, j = r, x = arr[i]; while(i<j){ while(i<j && arr[j]>x) j--; if(i<j) //這里用i++,被換過來的必然比x小,賦值后直接讓i自加,不用再比較,可以提高效率 arr[i++] = arr[j]; while(i<j && arr[i]<x) i++; if(i<j) //這里用j--,被換過來的必然比x大,賦值后直接讓j自減,不用再比較,可以提高效率 arr[j--] = arr[i]; } arr[i] = x;  quickSort(arr, l, i-1); quickSort(arr, i+1, r); }}

3. 二路歸并

PS:將兩個按值有序序列合并成一個按值有序序列,則稱之為二路歸并排序。

function merge(left, right) { var result = [],  il = 0,  ir = 0; while (il < left.length && ir < right.length) {  if (left[il] < right[ir]) {   result.push(left[il++]);  } else {   result.push(right[ir++]);  } } while(left[il]){  result.push(left[il++]); } while(right[ir]){  result.push(right[ir++]); } return result;}

字符串操作

1. 判斷回文字符串

function palindrome(str){ // /W匹配任何非單詞字符。等價于“[^A-Za-z0-9_]”。 var re = /[/W_]/g; // 將字符串變成小寫字符,并干掉除字母數字外的字符 var lowRegStr = str.toLowerCase().replace(re,''); // 如果字符串lowRegStr的length長度為0時,字符串即是palindrome if(lowRegStr.length===0) return true; // 如果字符串的第一個和最后一個字符不相同,那么字符串就不是palindrome if(lowRegStr[0]!=lowRegStr[lowRegStr.length-1]) return false; //遞歸 return palindrome(lowRegStr.slice(1,lowRegStr.length-1));}

2. 翻轉字符串

2.1 思路1:反向遍歷字符串

function reverseString(str){ var tmp = ''; for(var i=str.length-1;i>=0;i--) tmp += str[i]; return tmp}

2.2 思路2:轉化成array操作。

function reverseString2(str){ var arr = str.split(""); var i = 0,j = arr.length-1; while(i<j){  tmp = arr[i];  arr[i] = arr[j];  arr[j] = tmp;  i++;  j--; } return arr.join("");}

PS:什么?你要問為啥不直接操作str? 因為str[i]是只讀的,不能str[0]=str[1]這樣操作。

再PS:如果允許用reverse(),也可以用'str'.split('').reverse().join('')實現。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 沾益县| 平谷区| 吉木萨尔县| 临澧县| 中西区| 南陵县| 易门县| 页游| 崇明县| 宕昌县| 奉化市| 黄冈市| 广宗县| 铅山县| 宣城市| 武清区| 奇台县| 景东| 陇西县| 全州县| 繁昌县| 三门峡市| 安乡县| 囊谦县| 宝应县| 和静县| 凌源市| 乐陵市| 仁布县| 常宁市| 鸡西市| 车险| 盐池县| 贵州省| 巩义市| 逊克县| 东平县| 永仁县| 香格里拉县| 嘉祥县| 商河县|