快速排序(Quick Sort)演算法,瞬間就可以排好超大序列! 2019 年 4 月 4 日 Magic Len 研究分享、 Go、 Java、 Rust、 演算法、 JavaScript 快速排序(Quick Sort)演算法又稱為劃分交換排序(Partition-Exchange Sort)演算法,是實用性很高的排序演算法,它可以在O(nlogn)的時間複雜度完成排序,雖然是不穩定排序,但它的速度完全可以彌補這個缺點。 繼續閱讀
Bogo排序(Bogo Sort)演算法,慢到會想笑排序演算法 2019 年 4 月 1 日 Magic Len Go、 Java、 Rust、 演算法、 JavaScript Bogo排序(Bogo Sort)演算法又稱為猴子排序(Monkey Sort)演算法,顧名思義,是非常愚蠢的排序演算法,就像是請猴子幫忙排序一樣。 繼續閱讀
如何有效率地寫程式判斷質數和尋找質數? 2018 年 10 月 14 日 Magic Len 研究分享、 Go、 Java、 數學邏輯、 Rust、 JavaScript 一個質數(Prime)是一個大於1,且無法找到除了自己本身和1之外的自然數能整除它的自然數。舉例來說,2、3、5、7、11、13和17均為質數。質數是數學上的難題,即便數學已經過幾千年的發展,卻也還是無法找出一個能完美產生出質數的函數。在學習寫程式的過程中,儘管在現實社會中幾乎用不到,我們還是會常常遇到判斷質數或是尋找質數的問題。那麼,究竟要如何利用程式來處理判斷質數和尋找質數呢? 繼續閱讀
[HackerRank]快速排序法的執行時間(Running Time of Quicksort) 2018 年 9 月 23 日 Magic Len 程式解題、 Java 承上題,藉由統計位移或是交換元素的次數來計算快速排序法和插入排序法的執行次數,來比較每次都以最尾端的元素作為支點的快速排序法究竟比插入排序法快多少。 繼續閱讀
[HackerRank]快速排序3─原地的快速排序法(Quicksort In-Place) 2018 年 9 月 23 日 Magic Len 程式解題、 Java 在上一題中,實作了完整的快速排序法,能成功將一個陣列排序完成。但是這個演算法在劃分的時候需要將元素儲存到新的陣列中,浪費了許多時間和空間。為了進行優化,我們必須替快速排序法實作出一個「原地」(in-place)的版本,讓它能夠只使用陣列自身的空間來完成排序。 繼續閱讀
[HackerRank]夏洛克和陣列(Sherlock and Watson) 2018 年 7 月 5 日 Magic Len 程式解題、 Java 約翰‧華生替整數陣列做出了一種運算方式,稱為「右循環旋轉」。這種運算方式,可以將陣列最右邊的元素移出,並插入到陣列的最左邊。他為了要考驗夏洛克的能力,會給夏洛克一個整數陣列,接著再告訴夏洛克進行「右循環旋轉」的次數之後,再給幾個陣列的索引值,問夏洛克此時陣列的每個索引值所對應的元素值是多少。 繼續閱讀
[HackerRank]福爾摩斯和數對(Sherlock and Pairs) 2018 年 7 月 2 日 Magic Len 程式解題、 Java 華生給了夏洛克‧福爾摩斯一個包含N個整數的陣列,然後華生問夏洛克存在多少組數對(i, j),其索引值並不相同,但元素值是相同的。 繼續閱讀
[HackerRank]最接近的數字(Closest Numbers) 2018 年 6 月 28 日 Magic Len 程式解題、 Java 給定一個未排序的整數陣列,您可以找出一組差的絕對值最小的元素嗎?如果有好幾組元素差的絕對值都一樣小,那就把它們全都找出來吧! 繼續閱讀
[HackerRank]尋找中位數(Find the Median) 2018 年 6 月 25 日 Magic Len 程式解題、 Java 給定一個擁有奇數數量元素的陣列,你能夠在陣列整個排序好之前就找出它的中位數(中間值)嗎? 繼續閱讀
[HackerRank]快速排序2─排序(Quicksort 2 - Sorting) 2018 年 6 月 23 日 Magic Len 程式解題、 Java 在上一題中,你已經知道如何將一個集合劃分為left(左邊)、right(右邊)或是equal(相等)三個集合了。你能夠重複進行劃分的動作,來完成整個集合的排序嗎? 繼續閱讀