1. 程式人生 > >京東測試系機試題,求中位數,easy

京東測試系機試題,求中位數,easy

  做了京東的機試題目,有一個題目是給出一個整型無序陣列,求增加一個數(可以是整型也可以是float型),不改變這個陣列的中位數。

  首先,中位數的意思就是,從小到大進行排列,若是奇數n的話,則中間一個為中位數。若是偶數n的話,則是中間兩個數的平均值。

  首先是輸入一個數n,及無序陣列的長度,然後輸入n個數,做一個快排生成一個從小到大的陣列。然後判斷n的奇偶,計算輸出即可,很簡單的思路,直接上程式碼   

#include <iostream>
#include <cassert>
#include <stack>
#include <math.h>
#include<algorithm> using namespace std; bool cmp(int a,int b){ return a<b; } float EvaluateMedian(int a[], int n) { sort(a,a+n,cmp); if(n % 2 !=0) { return a[n / 2]; } else { return ((float)(a[n / 2] + a[n / 2 -1]))/ 2; } } int main() { int
num ; cin>>num; int a[100]; for(int i=0;i<num;i++){ cin>>a[i]; } //使用cout輸出可以自動省去沒有的位數,擇不需要考慮float型的輸出長度 cout<<EvaluateMedian(a, num)<<endl; return 0; }