計數排序法(Counting Sort),只需線性時間就能完成的超快排序法 2017 年 10 月 21 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 計數排序(Counting Sort)演算法是不需進行比較的排序演算法,顧名思義,它會去數元素的數量來進行排序。這種排序法只需要線性時間和空間的複雜度就可以完成排序,比時間複雜度為O(nlogn)的演算法還快,而且作法也不會太難。雖然如此,計數排序法是並不算是常見的排序演算法,因為它只能用來排序已知數值範圍的序列(由於要直接對應序列的索引值,所以這組數值通常會是一組整數)。舉例來說,已知序列中的每... 繼續閱讀
個人化自己的vim文字編輯器(.vimrc設定教學) 2016 年 12 月 14 日 Magic Len Linux、 研究分享、 軟體介紹 vim文字編輯器是vi文字編輯器的強化版本,兩者都是運行在文字介面(CLI)上。vim支援多次復原、多窗格、程式碼語法高亮和滑鼠控制等多種功能,經常在Linux和macOS作業系統上被用來查看與編寫程式碼,尤其是透過SSH連線來操作系統的時候更為常用。由於vim是如此常用的文字編輯器,且就算在別台電腦上都有可能會使用SSH連回自己的主機使用vim來編輯文字檔案,以至於替vim設計出一個屬於自己的編... 繼續閱讀
如何使用Java來隨機產生資料? 2016 年 7 月 11 日 Magic Len 研究分享、 Java 在寫程式的時候常常會需要進行一些隨機的動作,來增加程式的娛樂性和複雜性。在Java程式語言中,可以使用Math類別的random方法或是Random物件來達到取得隨機數字的目的。取得隨機數字之後還需要撰寫一些程式來使用這個隨機數,這類程式常會頻繁地重複撰寫,十分麻煩。為了精簡程式,MagicRandom實作好了一些常用的隨機資料程式,只要使用一個靜態方法就可以完成大部分的事。 繼續閱讀
Java泛型的轉換,「T」、「?」、「? extends T」和「? super T」究竟有什麼差別? 2016 年 6 月 5 日 Magic Len 研究分享、 Java Java 5之後加入了「泛型(generic)」,允許將物件的型態以參數的形式來定義。「?」是泛型的萬用字元,表示任意的物件型態,「?」還可以與「extends」和「super」兩個關鍵字合用,至於它們的用法和差別在哪,將是本篇文章要探討的部份。 繼續閱讀
快速選擇(Quickselect)演算法,快速尋找第K小或是第K大的元素 2016 年 5 月 24 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 快速選擇(Quickselect)演算法是利用快速排序(Quick Sort)演算法,在排序序列的同時,選擇出序列中第K小或是第K大的元素。若我們只想要從序列中找出一個第K小或是第K大元素,使用快速選擇法會比使用快速排序法來得快很多,因為前者不需要把序列的排序完整做完,平均只需線性時間即可找到結果。 繼續閱讀
寫程式的基本功:排序演算法(Sorting Algorithm) 2016 年 5 月 16 日 Magic Len 研究分享、 演算法 這裡所稱的排序(Sorting),是指將一串不規則的序列資料(如陣列資料)依照遞增或是遞減的方式重新編排。要將一串不規則的數值資料遞增或是遞減排列,方法當然不會只有一種,而不同方法排列資料的難易度、速度和其它特性自然也會有所不同。排序演算法(Sorting Algorithm)就是排列資料的方法,目前已知的方法有很多,在這篇文章中將會整理本站所介紹過的大部份排序演算法。 繼續閱讀
國片「牯嶺街少年殺人事件」觀後感 2016 年 5 月 14 日 holaguest 文學創作、 研究分享 今年(2016年)3月,有件大事情跟本片有著密切的關係,也令許多影迷感到雀躍不已,原來是美國藝術電影片商 Criterion Collection (全名美國標準收藏公司,簡稱CC)花了超過十年的時間為九零年代經典電影《牯嶺街少年殺人事件》進行數位修復,也就是即日起您已經可以觀賞到這部片4K超高畫質,長達237分鐘的藍光光碟修復版本了! 繼續閱讀
Boyer-Moore-MagicLen(BM-MagicLen)字串搜尋演算法,超快速的全文搜尋演算法 2016 年 4 月 9 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 在一篇很長的文章或是一大串文字中找出自己想看到的段落是我們時常會需要做的事情,但是要如何有效率地讓電腦尋找文字中的文字是一件需要思考的事情,甚至有許多針對這個議題所提出的研究論文。字串搜尋演算法的好壞,在複雜的文件內容下,對搜尋時間的影響是非常深遠的。字串搜尋除了能夠正確搜尋一段文字內的特定字串外,還可以用來搜尋龐大的任意資料,因為任何的資料都可以藉由數位編碼轉成只有數字的字串,如一段原始的聲音,... 繼續閱讀
有損音訊壓縮格式大比拼─MP3、Ogg、AAC、HE-AAC、HE-AACv2、Opus究竟誰才是王者? 2016 年 2 月 14 日 Magic Len 研究分享、 音樂心得 由於儲存空間和資料傳輸速度的限制,我們可能沒辦法將很多聲音完好無損的保存或是傳送。聲音是給人聽的,但是人類的耳朵的聽力有限,非常細微的訊號差異其實感受不太出來,因此可以使用一些會改變原本聲音訊號的方式來將其重新編碼(Encode)成和原始聲音訊號聽起來差異不大的格式,減少儲存聲音訊號所佔用空間和加快傳送聲音訊號時的速度,而這種壓縮聲音訊號的方式就稱為有損壓縮(Lossy Compression)。... 繼續閱讀
在Linux上使用FDK AAC將音樂轉成M4A(AAC、HE-AAC、HE-AACv2)格式 2016 年 2 月 9 日 Magic Len Linux、 研究分享、 軟體介紹 M4A是封裝於MPEG4,使用AAC(進階音訊編碼, Advanced Audio Coding)格式壓縮的音訊檔案。若拿相同大小的MP3和AAC格式的音樂檔案來比較,AAC的音質通常會比MP3還要來得好。在低位元率下,HE-AAC和HE-AACv2的音質遠勝於MP3。AAC的取樣精度最高可到32位元,MP3則只有16位元;AAC的取樣頻率最高可以達到96kHz,MP3則只有48kHz。因此現在愈... 繼續閱讀