PTA 兩個有序序列的中位數(25分)


兩個有序序列的中位數 
 

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

 

輸入格式:

輸入分三行。第一行給出序列的公共長度N(0<N≤100000),隨后每行輸入一個序列的信息,即N個非降序排列的整數。數字用空格間隔。

輸出格式:

在一行中輸出兩個輸入序列的並集序列的中位數。

輸入樣例1:

5
1 3 5 7 9
2 3 4 5 6
 

輸出樣例1:

4
 

輸入樣例2:

6 -100 -10 1 1 1 1 -50 0 2 3 4 5 
 

輸出樣例2:

1

思路:建立一個數組,長度為兩個序列的總和,將序列中所有數字排序並且存入數組中,然后進行判斷。
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int i,k=0,l=0,n;
 5     int mid;
 6     scanf("%d",&n);
 7     int a[n],b[n],c[2*n];
 8     for(i=0;i<n;i++){
 9         scanf("%d",&a[i]);
10     }
11     for(i=0;i<n;i++){
12         scanf("%d",&b[i]);
13     }
14     i=0;
15     while(k<n&&l<n){
16         if(a[k]>b[l]){
17             c[i++]=b[l++];
18         }else{
19             c[i++]=a[k++];
20         }
21     }
22     while(k<n){
23         c[i++]=a[k++];
24     }
25     while(l<n){
26         c[i++]=a[l++];
27     }
28     mid=c[(i-1)/2];
29     printf("%d",mid);
30     return 0;
31 }

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM