乙個長度位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輸出格式 在一行中輸出兩個輸入序列...