1. [vim] vundle 套件管理

    vundle 是一個 vim 的套件管理工具

    使用git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

    就可以輕鬆的安裝 Vundle 了

    然後再在 .vimrc 中設定即可

    set rtp+=~/.vim/bundle/Vundle.vim
    call vundle#begin()
    Plugin 'gmarik/Vundle.vim'
    call vundle#end()
    

    將要安裝的 plugin 放在 vundle#begin() 與 vundle#end() 之中

    然後下

    :source %
    :PluginInstall
    

    即可安裝完成

    參考來源:

    Vundle.vim

    VimAwesome


  2. [sublime text] 安裝 Package Control

    Package Control 是一個方便管理套件的 plugin

    在 Sublime text 2 裡, 往往我們都要透過 Menu -> Preference -> Browse Packages 來瀏覽我們所安裝的套件

    而如果透過 Package Control 就可以很快的找尋套件以及安裝

    透過 Ctrl + ` 可以開啟 Sublime text 的 cmd

    再透過執行 Package Control 官網所提供的 script 後重開Sublime text 即可完成

    另外一個方法是在 Packages 的資料夾中自創資料夾 Package Control

    再從官網下載解壓縮到裡面即可

    資料來源


  3. [sublime text] 安裝 livereload

    LiveReload 是一個好用的 plugin

    每次我們改完網頁之後都要按重新整理

    LiveReload 可以自動幫我們完成這件事情

    安裝 livereload 分為兩個階段

    • 安裝 Sublime text plugin:

      使用 Package Control 來找 livereload 之後安裝即可

      裝完之後記得重開,沒安裝 Package Control 的人請先參考這篇 -> [安裝Package Control]

    • 安裝 Chrome extension:

      在Chrome 的擴充功能中安裝 livereload

      然後記得點選右上角的小圖示開啟


  4. [sort] shell sort

    shell sort 是 insertion sort 的改良版

    average case 的時間複雜度為 O(n ^ 3/2)

    屬於internal sort, 穩定排序

    目的是為了減少 insertion sort 的搬移次數

    其核心概念為將要排序的數依劃分數來分群

    最簡單的做法就是設定劃分數為2

    因此如果我們有8筆資料的話我們就可以分成4群 (4 = 8 / 2)

    而分別做完一次 insertion sort 之後

    再將劃分數 double, 也就是變成4

    此時我們只會劃分為2群 (2 = 8 / 2 / 2)

    依此類推

    直到分群結束為止

    而劃分的方式是採取間隔的方式來取元素

    舉例來說如果我們有8個元素

    63, 92, 27, 36, 45, 71, 58, 7

    因此我們亦開始會得到 {63,45}, {92,71}, {27,58} 以及{36,7} 4 群

    依此類推

    如此我們就可以減少insertion sort 的搬移次數

    Array版 – JAVA


  5. [sort] selection sort

    selection sort 是一種 internal sort

    適合小資料或已有初步排序的資料使用

    worst case 的時間複雜度為 O(n^2)

    如果要由小排到大

    其核心概念為每次 scan 時選擇一個最小的元素

    並與目前的位置的元素交換

    程式碼 – JAVA


  6. [sort] radix sort

    radix sort 是一個不需要兩兩比較元素的一種排序法

    其核心概念是透過分配每一個元素到適當的位置

    我們可以先從最低位數開始比較或從最高位數開始比較都可以

    假設我們從最低位數開始比較

    依照所比對到的元素該位數的值

    依序放置到相對應的位置

    最後整個比較完之後依序取出即可得到正確答案

    時間複雜度為 O(n log_p k)

    p 為資料字元數

    缺點是需要花費大量的額外空間來暫存資料

    若n 很大, 但是p 固定或很小

    則此演算法十分有效率

    radix sort – JAVA


  7. [sort] quick sort

    quick sort 是一個內部排序法

    平均時間複雜度為 O(n logn)

    worst case 的時間複雜度為 O(n^2)

    採取的是 divide and conquer 的模式來解決問題

    核心概念是先設整個序列的第一個值為K

    然後從左至右找到一個比K 大的元素 Ki

    並從右到左找到一個比K小的元素Kj

    找到後就彼此交換

    直到 i < j 時

    此時再將 Kj 與 K 的位置交換

    結束這回合

    此時便能決定K的位置

    然後再利用divide and conquer 來解決左邊與右邊尚未解決的subsequence

    quick sort – JAVA


  8. [sort] merge sort

    merge sort 是一個 external sort

    其時間複雜度為 O(n logn)

    適合合併多個檔案並排序

    如果有兩個檔案要做排序

    核心概念是先分別對這倆個檔案做內部排序

    之後再分別用指標指著這兩個檔案

    依序讀入後比較

    並將較小的元素給存到一個新的 sequence當中

    而該檔案繼續讀下一個元素

    直到讀完為止

    而如果其中一個檔案先讀完

    則直接將另外一個檔案的內容依序讀入sequence

    直至兩個檔案都讀完為止

    如此我們就可以得到一個排序過後的sequence

    直接merge – JAVA

    分割檔案後再merge – JAVA


  9. [sort] insertion sort

    insertion sort 是一個 internal sort

    其worst case 的時間複雜度為 O(n^2)

    如果要由小排到大

    核心概念為逐次檢查元素與其之前元素的大小

    如果比之前的元素小則將前面的元素往後推

    直到找到正確的位置為止

    因為在 scan 的過程中會發生多次的搬移

    所以如果以 linked list 來實作的話會快很多

    Array版 – Java


Page 1 / 4 »