找尋兩個序列的中位數

2021-08-28 02:41:40 字數 798 閱讀 2578

乙個長度位l的公升序序列,處在l/2(向上取整)的是中位數,現有兩個等長的序列,求這兩個序列合併後(仍然有序)的中位數:利用中位數演算法:

設a和b的中位數分別是a和b

(1)若a = b;則a就是中位數,結束

(2)若a < b;則捨棄a中較小的一半,b中較大的一般(若序列個數是偶數,則中位數也包含在這一半裡,奇數則不包含在裡面)

3)若a > b:則捨棄a中較大的一半,b中較小的一般

重複上述過程1,2,3;直至兩個序列中均只剩乙個元素,則較小的即為中位數

**如下:

#include

#include

#define initsize 100

typedef

int datatype;

typedef

struct seqlist;

void init(seqlist *l)

void creat(seqlist *l,int n)

l->n=n;

}int findmid(seqlist *l,seqlist *h )

if(l->data[mid1]data[mid2])//當

else

}else

else}}

return l->data[left1]data[left2]?l->data[left1]:h->data[left2];//兩個表都只剩乙個元素時,較小的是中位數

}void show(seqlist l)

}void main()

兩個有序序列的中位數

5 7 兩個有序序列的中位數 25分 已知有兩個等長的非降序序列s1,s2,設計函式求s1與s2並集的中位數。有序序列a0,a1,an 1a 0,a 1,cdots,a a 0 a 1 a n 1 的中位數指a n 1 2a a n 1 2 的值,即第 n 1 2 lfloor n 1 2 rflo...

兩個有序序列的中位數

問題 已知有兩個等長的非降序序列s1,s2,設計函式求s1與s2並集的中位數。有序序列a 0 a 1 a n 1 的中位數指a n 1 2 的值,即第 n 1 2 個數 a 0 為第1個數 演算法描述 輸入兩個長度自定且等長的陣列,然後對他們進行賦值。演算法的思路是分別取他們的中位數進行比較,假設兩...

兩個有序序列的中位數

7 1 兩個有序序列的中位數 30 分 已知有兩個非降序序列s1,s2,求s1與s2歸併成乙個序列的低位中位數。有序序列a0,a1,an 1的中位數指a n 1 2的值,即第 n 1 2 個數 a0為第1個數 輸入格式 輸入分4行。第一行給出第乙個序列的長度n1 0輸出格式 在一行中輸出兩個輸入序列...