4-11 求自定类型元素序列的中位数 (25分)
2016-07-20 22:47
501 查看
本题要求实现一个函数,求N个集合元素A[]的中位数。其中集合元素的类型为自定义的ElementType。
函数接口定义:
ElementType Median( ElementType A[], int N );
其中给定集合元素存放在数组A[]中,正整数N是数组元素个数。该函数须返回N个A[]元素的中位数,其值也必须是ElementType类型。
裁判测试程序样例:
解题思路:注意到裁判测试样例中有#define MAXN 10,既意味着自定义数组类型中元素个数,最多为10个。这意味着不必要为了追求数量级更低的排序算法,用代码较简单的插入排序或者希尔排序算法即可。本答案用希尔排序实现。
PAT 基础编程题的函数题中,这一道题目的分值是最高的,用到了简单的排序算法,分值一下高了上来。说明基础编程题难度不大。。。努力呀努力呀!!
函数接口定义:
ElementType Median( ElementType A[], int N );
其中给定集合元素存放在数组A[]中,正整数N是数组元素个数。该函数须返回N个A[]元素的中位数,其值也必须是ElementType类型。
裁判测试程序样例:
#include <stdio.h> #define MAXN 10 typedef float ElementType; ElementType Median( ElementType A[], int N ); int main () { ElementType A[MAXN]; int N, i; scanf("%d", &N); for ( i=0; i<N; i++ ) scanf("%f", &A[i]); printf("%.2f\n", Median(A, N)); return 0; } /* 你的代码将被嵌在这里 */
解题思路:注意到裁判测试样例中有#define MAXN 10,既意味着自定义数组类型中元素个数,最多为10个。这意味着不必要为了追求数量级更低的排序算法,用代码较简单的插入排序或者希尔排序算法即可。本答案用希尔排序实现。
ElementType Median( ElementType A[], int N) { int i, j, Increment; ElementType Tmp; //将数组排序 for ( Increment = N / 2; Increment > 0; Increment /= 2){ for ( i = Increment; i < N; i++){ Tmp = A[ i ]; for (j = i;j >= Increment;j -= Increment ){ if ( Tmp < A[ j - Increment ]) A[ j ] = A[ j - Increment ]; else break; } A[ j ] = Tmp; } } return A[ N / 2 ]; }
PAT 基础编程题的函数题中,这一道题目的分值是最高的,用到了简单的排序算法,分值一下高了上来。说明基础编程题难度不大。。。努力呀努力呀!!
相关文章推荐
- MySQL长事务导致的Table Metadata Lock
- QTabWidget and QTabBar.的文字的颜色设置,三种方法
- zabbix 用 LLD 完全自动化监控 Oracle
- POJ1141 Brackets Sequence(DP)
- Python下的LibSVM的使用
- io流拷贝文本文件
- 【android学习笔记】与MYSQL交互之JSONARRAY
- IO小结
- 7.19日牛客网总结
- OpenCV 2.4.13 编译使用(VS2015下)
- 数据库系统的组成
- Android 输入电话号码自动空格
- 【学习笔记】Redis(1)-数据结构
- [ZigBee] 12、ZigBee之看门狗定时器——饿了就咬人的GOOD DOG
- java转换excel表格中的时间格式,比如excel表格中时间格式异常
- POJ 1001 Exponentiation(大数)
- @NotNull和@NotEmpty和@NotBlank区别
- APP开发实战112-ProGuard注意事项
- ORACLE PL/SQL 实例精解之第二章 通用编程语言基础
- 114. Flatten Binary Tree to Linked List