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

資訊專欄INFORMATION COLUMN

JavaScript常用算法

lykops / 2748人閱讀

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

一、排序算法

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

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

按數組中對象的某一屬性排序:

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

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

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、插入排序
原理:從第二個元素開始,依次向前插入(插入時前面為有序數列),直到最后一個元素。
核心代碼:

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

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

}

各算法的性能測試:(測試數據來源https://blog.csdn.net/shuaige...)

數據結果如下

冒泡排序耗時26000ms左右

選擇排序耗時5800ms左右

插入排序耗時10600ms左右

歸并排序耗時80-100ms

快速排序
cutoff==5--->30-50ms
cutoff==10 --->30-60ms
cutoff==50 ---->40-50ms
cutoff==3效果不錯--->30-50ms,30ms出現的機會很多
cutoff==0時(即不在分割長度短的時候轉為插入排序),效果依然不錯,30-50ms,30ms出現的很多

堆排序耗時120-140ms

JavaScript提供的原生排序耗時55-70ms

結論

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/108925.html

相關文章

  • 數據結構與算法javaScript描述-前言[苦逼的失業中年]

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

    tanglijun 評論0 收藏0
  • 常用排序算法JavaScript實現

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

    jerry 評論0 收藏0
  • CSS技巧

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

    DangoSky 評論0 收藏0
  • CSS技巧

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

    zgbgx 評論0 收藏0
  • javascript的垃圾回收機制和內存管理

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

    googollee 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<