1. 程式人生 > >歸併 遞迴問題

歸併 遞迴問題

遞迴的本質 邏輯上自己呼叫自己  系統上幫你壓棧     

比如我要解決一個問題A 我必須先解決他的子問題B B也有子問題C C也有........   

相當於一種依賴的關係    遞迴    去回

耗記憶體 效率低    一切遞迴可以改成非遞迴

 

master公式

T(N)= T(N/2)+0(N)

待續

 

歸併    mergeSort      

  分而治之    

  從上往下  分   

    先將左部分與右部分排好序(遞迴行為排序);

    一個輔助陣列

    左與右比較  誰小往輔助數組裡填    直到填完一部分 (越界) 將另一部分的剩餘填進輔助陣列 再返回原陣列

   java中Arrays.sort()採用了一種名為TimSort的排序演算法,就是歸併排序的優化版本。歸併每次合併操作的平均時間複雜度為O(n),而完全二叉樹的深度為|log2n|。總的平均時間複雜度為O(nlogn)。而且,歸併排序的最好,最壞,平均時間複雜度均為O(n*logn)。

 

      小和問題    從下往上的歸併  逆序列問題