有一种简单的排序算法叫做计数排序 ( count sorting ) ,该排序算法对一个待排序的表进行排序,并将排序结果存放到另一个新的表中,表中所有待排序的关键字互不相同。 计数排序算法针对表中的每个记录,扫描待排序的表一趟,统计表中有多少个记录的关键码比该记录的关键码小。假设某记录统计出的计数值为 c ,于是该记录在新的有序表中的存放位置即为 c 。 数据类型的定义如下: #define MAXSIZE 100 typedef int KeyType; typedef struct { KeyType key ; } RecType; typedef RecType SeqList[MAXSIZE]; (1) 编写实现计数排序的算法,函数原型如下: void CountSorting (SeqList data , S eqList order , int n ); // data 为存放原始数据的数组, order 为有序数组, n 为元素个数 (2) 对于有 n 条记录的表,关键码比较次数是多少 ? (3) 与直接选择排序相比较,这种方法是否更好 ? 为什么 ?