PTA 6 11 求自定型別元素序列的中位數

2021-09-24 04:01:44 字數 1079 閱讀 8446

本題要求實現乙個函式,求n個集合元素a的中位數,即序列中第⌊n/2+1⌋大的元素。其中集合元素的型別為自定義的elementtype

elementtype median( elementtype a, int n );
其中給定集合元素存放在陣列a中,正整數n是陣列元素個數。該函式須返回na元素的中位數,其值也必須是elementtype型別。

#include #define maxn 10

typedef float elementtype;

elementtype median( elementtype a, int n );

int main ()

void heapadjust(elementtype* a,int i,int len ) //對於下標為i的元素從上往下調整 }

void heapsort(elementtype* a,int n)

} elementtype median( elementtype a, int n ) //注意經過堆排序後,元素從大到小排列

最後使用希爾排序,ac!!

希爾排序,就是分組進行插入排序, 將待排序列分割成若干子串行,子串行中每個元素相隔gap,分別進行直接插入排序,然後按一定規則減小gap再進行排序,待整個序列中的元素基本有序(增量足夠小)時,再對全體元素進行一次直接插入排序。因為直接插入排序在元素基本有序的情況下(接近最好情況),效率是很高的,因此希爾排序在時間效率上比前兩種方法有較大提高。

具體實現時每次從陣列第gap個元素開始,每個元素與自己組內的資料進行直接插入排序。

void shellsort(elementtype* a, int n)

a[k+gap]=tmp;

}} }

}elementtype median( elementtype a, int n )

6 11 求自定型別元素序列的中位數

6 11 求自定型別元素序列的中位數 25 分 本題要求實現乙個函式,求n個集合元素a的中位數,即序列中第 n 2 1 大的元素。其中集合元素的型別為自定義的elementtype。elementtype median elementtype a,int n 其中給定集合元素存放在陣列a中,正整數n...

6 11 求自定型別元素序列的中位數 (25 分)

本題要求實現乙個函式,求n個集合元素a的中位數,即序列中第 n 2 1 大的元素。其中集合元素的型別為自定義的elementtype。elementtype median elementtype a,int n 其中給定集合元素存放在陣列a中,正整數n是陣列元素個數。該函式須返回n個a元素的中位數,...

6 11 求自定型別元素序列的中位數 25分

本題要求實現乙個函式,求n個集合元素a的中位數,即序列中第 n 1 2 大的元素。其中集合元素的型別為自定義的elementtype。函式介面定義 elementtype median elementtype a,int n 其中給定集合元素存放在陣列a中,正整數n是陣列元素個數。該函式須返回n個a...