前端常見演算法 js

2021-09-11 22:07:10 字數 3832 閱讀 1349

不管是在實際專案中還是在面試的時候我們大都會碰到演算法問題,比如排序啊,比較大小啊之類的這些最基本的演算法。我總結了一些,以後在碰到在慢慢補充。

1.排序問題

1.1氣泡排序

氣泡排序演算法就是依次比較大小,小的的大的進行位置上的交換。

var example=[8

,95,34

,21,53

,12];

function

sortarr

(arr)}}

return arr;

}sortarr

(example)

; console.

log(example)

;//當i=0的時候,裡面的迴圈完整執行,從j=0執行到j=6,這也就是第一遍排序,結果是將最大的數排到了最後,這一遍迴圈結束後的結果應該是[8,34,21,53,12,95]

//當i=1的時候,裡面的迴圈再次完整執行,由於最大的數已經在最後了,沒有必要去比較陣列的最後兩項,這也是j//說到這裡,規律就清楚了,每次將剩下陣列裡面最大的乙個數排到最後面,當第乙個迴圈執行到最後的時候,也就是i=6,此時,j=0,只需要比較陣列的第一和第二項,比較完畢,返回。

1.2快速排序

//快速排序

//1.這種方法比較簡單,2019/8/5新增

var example=[1

,4,3

,8,9

,6,2

]function

quicksort

(arr)

var left=

,right=

,current=arr.

splice(0

,1);

for(

let i=

0;i)else

}return

quicksort

(left)

.concat

(current,

quicksort

(right));

}console.

log(

quicksort

(example));

//[1, 2, 3, 4, 6, 8, 9]

//2.

function

quicksort

(arr,l,r)

arr[i]

= x;

quicksort

(arr, l, i-1)

;quicksort

(arr, i+

1, r);}

}

1.3二路歸併

將兩個按值有序序列合併成乙個按值有序序列,則稱之為二路歸併排序

function

marge

(left,right)

else

}while

(left[il]

)while

(right[ir]

)return result;

}

2字串操作

2.1.翻轉字串

//方法1:反向遍歷字串

function

reversestring

(str)

//方法2:轉化成array操作

function

reversestring2

(str)

return arr.

join(""

);}

2.2生成指定長度的隨機字串

function

randomstring

(n)

2.3.統計字串**現次數最多的字母

詳細方法可看這篇文章

var str =

"nininihaoa"

;var o =

;for

(var i =

0, length = str.length; i < length; i++

)else

}console.

log(o)

;//輸出的是完整的物件,記錄著每乙個字元及其出現的次數//遍歷物件,找到出現次數最多的字元的次數

var max =0;

for(

var key in o)

}for

(var key in o)

3陣列操作

3.1 陣列去重

//利用object中的key的唯一性,利用key來進行篩選

function

unique

(arr)

var data =

for(

var i in arr)

}return data;

}

3.1.2 陣列查重

var

ret=

function

(arr)}if

(!repeat)

}return ch;

}var a=[1

,3,4

,3,5

,'aa'

,'bb'

,'aa'];

document.

write

(ret

(a))

;//3,aa

3.2 number陣列中最大差值

function

getmaxprofit

(arr)

return max - min;

}

4.階乘

//1. 非遞迴實現

function

factorialize

(num)

//2. 遞迴實現

function

factorialize

(num)

}

5.生成斐波那契數列

斐波拉契:又稱**分割數列,值得是乙個數列:0、1、2、3、5、8、13、21、34…,在數學上,斐波拉契數列主要考察遞迴的呼叫。

//強行遞迴實現

function

getfib

(n)}

function

fibo

(len)

//方法2.非遞迴實現

function

getfibonacci

(n)else

i++;}

return fibarr;

}

6.二分查詢

二分查詢:是在有序陣列中用的比較頻繁的一種演算法,優點是比較次數少,查詢速度快、平均效能好;缺點是要求待查表為有序,且插入刪除困難

// 非遞迴實現

function

binary_search

(arr, key)

else

if(key > arr[mid]

)else

if(key < arr[mid])}

return-1

;};//遞迴實現

function

binary_search2

(arr, low, high, key)

前端常見演算法JS實現

演算法是程式的靈魂,乙個優秀的前端工程師對演算法也是要有所了解的。排序演算法 1.氣泡排序 氣泡排序 function bubblesort arr 2.快速排序 快速排序 function quicksort arr,l,r else while left il while right ir re...

前端常見演算法JS實現

演算法是程式的靈魂,乙個優秀的前端工程師對演算法也是要有所了解的。排序演算法 1.氣泡排序 氣泡排序 function bubblesort arr 2.快速排序 快速排序 function quicksort arr,l,r arr i x quicksort arr,l,i 1 quicksor...

JS 常見排序演算法

氣泡排序 function bubblesort myarray return myarray function swap myarray,p1,p2 var myarray 3 44,38 5,47 15,36 26,27 2,46 4,19 50,48 var result bubblesort...