k026 - 中位數
題目描述
題目要求計算已排序整數陣列的中位數。如果陣列長度為奇數,則中位數是陣列中間的元素。如果陣列長度為偶數,則中位數是中間兩個元素的平均值。
解題思路
由於輸入的陣列已經排序,因此可以直接根據陣列長度的奇偶性來計算中位數。如果長度為奇數,則直接讀取中間位置的元素即可。如果長度為偶數,則讀取中間位置的前一個元素,再讀取陣列長度,然後計算這兩個元素的平均值。
複雜度分析
- 時間複雜度: O(n)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
int n,x;
int main(){
cin >> n;
if(n%2){
for(int i=0;i<=n/2;++i){
cin >> x;
}
cout << x;
}
else{
for(int i=0;i<n/2;++i){
cin >> x;
}
cin >> n;
cout << (x+n)/2;
}
}