原创 排序算法(一):冒泡排序

概念 冒泡排序:就行冒泡泡一樣,每次把最多大的或者最小的冒出來(找到),放在最後或者最前面,然後重複N次,就可以對數組進行排序,每次總是相鄰兩個作比較 時間複雜度 通過相鄰元素的比較和交換,使得每一趟循環都能找到未有序數組的最大值

原创 排序算法(二):插入排序

概念 把數組分成兩部分,一部分是有順序的,第二部分是沒有順序的,從沒有順序的數組中拿出來一個,把他排在有序數組中的相應位置 時間複雜度 最好:O(n),原數組已經是升序的。 最壞:O(n²) 平均:O(n²) 代碼 //

原创 揭示模式(Revealing Module)

概念 在模塊模式的基礎上,在返回的私有範圍內,重新定義所有的 函數和變量。並返回一個匿名的對象。他擁有所有指向私有函數的指針。 實例 var myRevealingModule = function(){ var priv

原创 這是抱怨嗎?或許是吧!

我 很 不 爽 我們的H5 頁面功能很類似,但是每次產品都會提出一些不同的需求,所以我們都是複製出一份來做。然後有時候新加一個功能,產品會說,這個項目裏的新功能要同步到以前的項目中去。然後我們就會很混亂,很多的項目 同步是很麻煩

原创 查找算法-二分查找

概念 二分查找的思路是很簡單的,前提是這組數據是有順序的。 思路是從中間找一個數,判斷大小,如果數比中間數大,說明在中間數到結尾的數中,如果小於,則說明在開始和中間數之間,經過多次相同操作,就可以得到我們想查找的數 時間複雜度

原创 排序算法(七):希爾排序

概念 這是一個叫希爾的人想到的,所以叫做希爾排序,也稱遞減增量排序算法,是插入排序的一種更高效的改進版本。但希爾排序是非穩定排序算法。 邏輯 首先,選擇增量 gap = 10/2 = 5 把所有的數分成5組,對每組進行排序 縮小

原创 nrm切換npm 神器

前言 使用node 經常需要切換 npm 的源。nrm 可以方便的切換 不同的源。 安裝 npm install -g nrm 命令 npm --help Usage: nrm [options] [command] O

原创 排序算法(六):桶排序

概念 桶排序:取 n 個桶,根據數組的最大值和最小值確認每個桶存放的數的區間,將數組元素插入到相應的桶裏,最後再合併各個桶 複雜度 最好:O(n),每個數都在分佈在一個桶裏,這樣就不用將數插入排序到桶裏了(類似於計數排序以空間換時

原创 算法打卡第一天:複雜度分析

大O 大O時間複雜度表示代碼隨着數據規模增長的變化趨勢 注意點: 只關注執行最多的一段代碼 加法法則:總複雜度等於量級最大的那段代碼的時間複雜度 乘法法則:嵌套的代碼的複雜度等於嵌套內外代碼複雜度的乘積 常見的時間複雜度 常量階

原创 排序算法(八):快速排序

概念 快速排序又叫快排,思路是 在arr中找到一個點,從這點開始曉得都移動到前面,大的都移動到後面。然後把這兩部分分別進行同樣的操作。直到left 不小於right 的時候 說明所有的操作都進行完了 代碼 const swap =

原创 排序算法(五):基數排序

概念 基數排序是非比較排序算法,算法的時間複雜度是O(n). 相比於快速排序的O(nlgn),從表面上看具有不小的優勢.但事實上可能有些出入,因爲基數排序的n可能具有比較大的係數K.因此在具體的應用中,應首先對這個排序函數的效率進

原创 排序算法(九):歸併排序

概念 遞歸將數組分爲兩個序列,有序合併這兩個序列。歸併排序的核心思想還是蠻簡單的。如果要排序一個數組,我們先把數組從中間分成前後兩部分,然後對前後兩部分分別排序,再將排好序的兩部分合並在一起,這樣整個數組就都有序了。 歸併排序使

原创 排序算法(三):選擇排序

概念 選擇一個數和後面的所有數比較,確定現在位置的值 時間複雜度 最好:O(n²) 最壞:O(n²) 平均:O(n²) 代碼 function select_sort(arr) { let leg = a

原创 排序算法(四):計數排序

概念 以數組元素值爲鍵,出現次數爲值存進一個臨時數組,最後再遍歷這個臨時數組還原回原數組。因爲 JavaScript的數組下標是以字符串形式存儲的,所以計數排序可以用來排列負數,但不可以排列小數。 複雜度 最好:O(n + k)

原创 12月第一篇博客

這個月忙的有點不知所措。 上一篇博客還是抱怨任務重,又在這樣的氛圍中度過了將近一個月。形式更加嚴峻。 公司前端原來四個人,現在就剩下兩個。但是任務卻沒有減少。我們安排任務也不需要技術人員評估時間。只有任務量和結束時間。 發現這樣下