POJ-1002-487-3279

核心思想:

格式化,排序,输出。


注记:

1、排序可以使用C语言stdlib.h中的快排函数

void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));
参数: 

1 待排序数组首地址
2 数组中待排序元素数量
3 各元素的占用空间大小
4 指向函数的指针,用于确定排序的顺序

int comp(const void *a, const void *b) {
	return strcmp((char*)a, (char*)b);
}
qsort(str, n, sizeof(char)* STRLEN, comp);

2、输入中的一行字符串最多有多长?

起初,我用的字符串长度为20,但提交后“Wrong Answer”……

分析之后,确定算法没有问题,后来把20改为100,“Accept”……

3、函数的参数为二维数组时,如何引用?

起初,函数是这样定义的

void printCount(char **, int);
数组是这样定义的
char str[NUM][STRLEN];
当调用函数时,

printCount(str, n);
提示:“char **”与“char [100000][9]”的间接级别不同。
解决方案是,把函数声明成这样

void printCount(char [][STRLEN], int);

一些解释见如下链接。

将二维数组当作参数的时候,必须指明所有维数大小或者省略第一维的,但是不能省略第二维或者更高维的大小,这是由编译器原理限制的。(原因不是很理解,若是以后能够理解,便补上!)

http://blog.csdn.net/yunyun1886358/article/details/5659851

http://blog.csdn.net/xudongdong99/article/details/6723163


------------

未来:

我想把各个排序算法都实现以下,然后看看效率如何,不过重点还是亲自写一下排序算法!

你可能感兴趣的:(二维数组,qsort,1002)