原创 快速排序--荷蘭國旗三色優化

快速排序作爲十大經典排序之一,大家應該有所耳聞,對它的優化網上也有不少,比如隨機數快排,中位數快排,甚至有的走火入魔去融合插入排序或多線程……今天我們不成魔,做個優化針對於重複的數字,普通快排一次partition歸位一個數,經過優化後直

原创 java歸併排序的應用--求逆序數

上一篇我們講了歸併排序的應用和思路,我們現在藉助這個歸併排序的思路,即每個元素要和左邊所有,或右邊所有元素進行比較的時候,這種情況下可以用歸併排序,來解出一個數組中逆序數對,這個貌似是流行了十年多的經典應用了。 老規矩先說下什麼是逆序對

原创 java歸併排序的應用--求小和

歸併排序大家都會寫了吧,那你知道什麼場景或什麼題能派上用場嗎?當涉及到數組元素中,每個元素要和左邊所有,或右邊所有元素進行比較的時候,這種情況下可以用歸併排序,在排序的過程中,把事兒幹了。 不理解的話,看下這個圖就清楚了,我們現在只看3的

原创 java歸併排序非遞歸實現

十大經典排序之一的歸併,很多資料裏都是用了遞歸,其實遞歸都能轉化爲非遞歸,非遞歸不會棧溢出,也能更直觀看出時間複雜度爲O(n*log(n))。 思路很簡單,用一個變量span表示跨度,每次跨度*2來循環數組的長度,在循環裏再2個sp

原创 jdk動態代理爲什麼要接口

jdk的動態代理爲什麼用接口,內部是什麼原理呢?看了幾篇文章貌似都沒講的清楚明白,因此來解釋一下。先通過一個簡單例子實現功能: //接口 public interface SayService { void say(String n