国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript常用算法

lykops / 2742人閱讀

摘要:一排序算法原生排序算法參數(shù)比較函數(shù)可選若無參數(shù)則按照首字母的碼排序比較函數(shù)的作用為確定排序按數(shù)組中對(duì)象的某一屬性排序冒泡排序原理從第一個(gè)元素開始依次同相鄰元素比較,小于則交換,直到比較完最后一個(gè)元素,否則停止,完成一個(gè)元素的冒泡行為。

一、排序算法

1、Array.sort(function)(JavaScript原生排序算法)
參數(shù):比較函數(shù)(可選)
若無參數(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è)元素開始依次同相鄰元素比較,小于則交換,直到比較完最后一個(gè)元素,否則停止,完成一個(gè)元素的冒泡行為。循環(huán)進(jìn)入下一元素。
核心算法:

for(let i=0;iarr[j]){
            [arr[i],arr[j]] = [arr[j],arr[i]];//交換相鄰值
        }
    }
}

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

let len = arr.length;
for(let i=0;i

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

let len = arr.length;
for(let i=1;i

5、快速排序
原理:選取一個(gè)基準(zhǔn)元素,以此分為兩組,大于基準(zhǔn)元素和小于基準(zhǔn)元素組。然后遞歸兩個(gè)子數(shù)組。最后把數(shù)組連接起來。
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)

}

各算法的性能測試:(測試數(shù)據(jù)來源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í)(即不在分割長度短的時(shí)候轉(zhuǎn)為插入排序),效果依然不錯(cuò),30-50ms,30ms出現(xiàn)的很多

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

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

結(jié)論

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

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/108925.html

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)與算法javaScript描述-前言[苦逼的失業(yè)中年]

    摘要:還以為我是一個(gè)失業(yè)青年,后來想想,后已經(jīng)是中年了。對(duì)于各路框架,還是根據(jù)業(yè)務(wù)需求去學(xué)習(xí)比較好,相信自己的學(xué)習(xí)能力。我還是先鞏固一下數(shù)據(jù)結(jié)構(gòu)和算法吧。數(shù)據(jù)結(jié)構(gòu)與算法的描述針對(duì)自己目前所處的環(huán)境,就用來描述常用的數(shù)據(jù)結(jié)構(gòu)跟常用的算法。 失業(yè)中年 前段時(shí)間,帶我出道的CTO要帶我去創(chuàng)業(yè),然后,之前談好的技術(shù)方案在我過去之后都沒能開始,怪可惜的,甚至,他自己都背鍋離職了。再后來,股東突然撤資了...

    tanglijun 評(píng)論0 收藏0
  • 常用排序算法JavaScript實(shí)現(xiàn)

    摘要:代碼實(shí)現(xiàn)六堆排序算法簡介堆排序是指利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。九計(jì)數(shù)排序算法簡介計(jì)數(shù)排序是一種穩(wěn)定的排序算法。計(jì)數(shù)排序不是比較排序,排序的速度快于任何比較排序算法。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 1、插入排序 1)算法簡介 插入排序(Insertion-Sort)的算法描述是一種簡單直觀的排序算法。它...

    jerry 評(píng)論0 收藏0
  • CSS技巧

    摘要:技巧使你的更加專業(yè)這是上關(guān)于技巧的一篇譯文,另外你也可以在本項(xiàng)目看到原文。列舉了一些很實(shí)用的技巧,比如給空內(nèi)容的標(biāo)簽添加內(nèi)容,逗號(hào)分隔列表等等。排序算法看源碼,把它背下來吧排序算法的封裝。主要幫助初學(xué)者更好的掌握排序算法的實(shí)現(xiàn)。 成為專業(yè)程序員路上用到的各種優(yōu)秀資料、神器及框架 成為一名專業(yè)程序員的道路上,需要堅(jiān)持練習(xí)、學(xué)習(xí)與積累,技術(shù)方面既要有一定的廣度,更要有自己的深度。 Java...

    DangoSky 評(píng)論0 收藏0
  • CSS技巧

    摘要:技巧使你的更加專業(yè)這是上關(guān)于技巧的一篇譯文,另外你也可以在本項(xiàng)目看到原文。列舉了一些很實(shí)用的技巧,比如給空內(nèi)容的標(biāo)簽添加內(nèi)容,逗號(hào)分隔列表等等。排序算法看源碼,把它背下來吧排序算法的封裝。主要幫助初學(xué)者更好的掌握排序算法的實(shí)現(xiàn)。 成為專業(yè)程序員路上用到的各種優(yōu)秀資料、神器及框架 成為一名專業(yè)程序員的道路上,需要堅(jiān)持練習(xí)、學(xué)習(xí)與積累,技術(shù)方面既要有一定的廣度,更要有自己的深度。 Java...

    zgbgx 評(píng)論0 收藏0
  • javascript的垃圾回收機(jī)制和內(nèi)存管理

    摘要:另一種垃圾收集算法是引用計(jì)數(shù),這種算法的思想是跟蹤記錄所有值被引用的次數(shù)。當(dāng)代碼中存在循環(huán)引用現(xiàn)象時(shí),引用計(jì)數(shù)算法就會(huì)導(dǎo)致問題。 垃圾回收 javascript不同于c、c++的一個(gè)特點(diǎn)是:具有自動(dòng)的垃圾回收機(jī)制,這就意味著,開發(fā)人員可以專注于業(yè)務(wù),而不必把過多精力放在內(nèi)存的管理上,提高開發(fā)效率。 所謂的垃圾回收就是找出那些不再繼續(xù)使用的變量,然后釋放其占用的內(nèi)存。為此,垃圾收集器...

    googollee 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<