1. 程式人生 > >第二章實驗報告

第二章實驗報告

空間 復雜 第二章 數組長度 因此 全部 新建 選擇 cal

一、題目:

7-3 兩個有序序列的中位數。

二、問題描述:

已知有兩個等長的非降序序列S1, S2, 設計函數求S1S2並集的中位數。有序序列A0,A1,?,AN?1的中位數指A(N?1)/2的值,即第?(N+1)/2?個數(A0為第1個數)。

三、算法描述:

首先要對兩個等長數組進行重新排序,可以考慮直接合並再排序或者新建一個數組進行排序。合並再排序要多次移動數據,運算次數較多,因此我選擇了新建一個數組,邊導入數據邊進行排序。

因為兩個等長數組的排列是有規律的(由小到大),所以我可以直接比較兩個數組的第一個數的大小,然後選擇較小的一個放到新的數組中,然後被取出數據的那個數組的第二個數與另一個數組的第一個數比較,依然是取出較小的一個,以此重復,直到兩個數組中的所有元素均被取出。

四、算法時間及空間復雜度分析

時間復雜度:

最好的情況:當一個數組中的全部元素均小於另一個數組的第一個數時,比較次數為N

最壞的情況:當兩個數組中的元素全都有交錯時每兩個元素都要進行一次比較,比較次數為2N

所以時間復雜度為O(N)

空間復雜度:

會隨數組長度的增加而等量增加,O(N)

五、心得體會

該算法簡答易行,容易設計,但是時間復雜度和空間復雜度相對較高,以後需要在老師的指導下,重新斟酌算法,做出時間和空間復雜度更低的算法。

第二章實驗報告