日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

JavaScript常用算法

發(fā)布時(shí)間:2025/3/15 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript常用算法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、排序算法

1、Array.sort(function)(JavaScript原生排序算法)
參數(shù):比較函數(shù)(可選)
若無(wú)參數(shù),則按照首字母的ASCII碼排序,比較函數(shù)的作用為確定排序

function(value1,value2){if (value1 > value2) {return 1;}else if (value1 < value2) {return -1}else {return 0} }

按數(shù)組中對(duì)象的某一屬性排序:

function compared(property){return function(a,b){let value1 = a[property];let value2 = b[property];return value2 - value1;} } array.sort(compared('property'));

2、冒泡排序
原理:從第一個(gè)元素開(kāi)始依次同相鄰元素比較,小于則交換,直到比較完最后一個(gè)元素,否則停止,完成一個(gè)元素的冒泡行為。循環(huán)進(jìn)入下一元素。
核心算法:

for(let i=0;i<arr.length;i++){let mix = arr[i];for(let j=i+1;j<arr.length;j++){if(mix>arr[j]){[arr[i],arr[j]] = [arr[j],arr[i]];//交換相鄰值}} }

3、選擇排序
原理:每次選擇最大的元素,依次至于末尾。
核心算法:

let len = arr.length; for(let i=0;i<len;i++){let maxIndex = i;for(let j=0;j<len-i;j++){if(arr[maxIndex]<arr[j]){maxIndex = j;//記錄最大值索引}}[arr[len-1-i],arr[maxIndex]] = [arr[maxIndex],arr[len-1-i]];//調(diào)整最大值位置 }

4、插入排序
原理:從第二個(gè)元素開(kāi)始,依次向前插入(插入時(shí)前面為有序數(shù)列),直到最后一個(gè)元素。
核心代碼:

let len = arr.length; for(let i=1;i<len;i++){for(let j=0;j<i;j++){if(arr[i]<arr[j]){[arr[j],arr[i]] = [arr[i],arr[j]];}} }

5、快速排序
原理:選取一個(gè)基準(zhǔn)元素,以此分為兩組,大于基準(zhǔn)元素和小于基準(zhǔn)元素組。然后遞歸兩個(gè)子數(shù)組。最后把數(shù)組連接起來(lái)。
function quickSort(arr){

let len = arr.length; if(len<=1){//遞歸出口return arr; } let mid = Math.floor(len/2),left = [],right = []; arr.forEach((item)=>{if(item>arr[mid]){left.push(item)}else {right.push(item)} }) let _left = quickSort(left),_right = quickSort(right); retrun left.concat(arr[mid],right)

}

各算法的性能測(cè)試:(測(cè)試數(shù)據(jù)來(lái)源https://blog.csdn.net/shuaige...)

數(shù)據(jù)結(jié)果如下

冒泡排序耗時(shí)26000ms左右

選擇排序耗時(shí)5800ms左右

插入排序耗時(shí)10600ms左右

歸并排序耗時(shí)80-100ms

快速排序
cutoff==5--->30-50ms
cutoff==10 --->30-60ms
cutoff==50 ---->40-50ms
cutoff==3效果不錯(cuò)--->30-50ms,30ms出現(xiàn)的機(jī)會(huì)很多
cutoff==0時(shí)(即不在分割長(zhǎng)度短的時(shí)候轉(zhuǎn)為插入排序),效果依然不錯(cuò),30-50ms,30ms出現(xiàn)的很多

堆排序耗時(shí)120-140ms

JavaScript提供的原生排序耗時(shí)55-70ms

結(jié)論

快速排序效率最高,cutoff取3效果最好(沒(méi)有懸念)

原生排序竟然是第二快的排序算法!諸位同學(xué)參加筆試的時(shí)候,在沒(méi)有指明必須要用哪種排序算法的情況下,如果需要排個(gè)序,還是用原生的yourArr.sort(function(a,b){return a-b})吧,畢竟不易錯(cuò)還特別快!

來(lái)源:https://segmentfault.com/a/1190000018046412

轉(zhuǎn)載于:https://www.cnblogs.com/qixidi/p/10391062.html

總結(jié)

以上是生活随笔為你收集整理的JavaScript常用算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。