C语言教学杂记——字母排序

       一个人在被告诉一个问题应该怎么被解决后,而且亲身试验效果OK后,一旦遇到类似的问题,就会条件反射般直接拿这个方法来用了。很少会去想为什么要用这个方法,会不会有什么隐患,还有没有别的方法呢,等等这些问题。

      至少我是这样。

      这学期上C语言课,本来出的题目让学生把任意字符串按照字母顺序输出,是想让他们练习一下排序算法。

       有个学生交上来的程序是这样的:

#include <stdio.h>
#include <string.h>
int main()
{
char ch[100],_mark;
int i,n;
scanf("%s",ch);
n=strlen(ch);
_mark='A';
while(_mark<='Z')
{
    for(i=0;i
 {
  if(ch[i]==_mark)
   printf("%c",ch[i]); 
 }
 _mark++;
}
return 0;
}

 

      很明显,她的思路是把这串字符遍历26次,从最小的‘A’开始遍历一遍,相等的输出;然后用'B'去遍历,直到最后一个大写字母'Z'。

      在我已经大概提过排序的思路后,她却想到了这个输出方式。虽然,这个算法的适应性和算法的时间复杂度都很高,而且从这两个评判程序优劣的角度来看这个程序甚至是略显笨拙。但是,它胜在容易理解和别出心裁,实在是让我惊喜!!

posted @ 2015-05-07 20:52  wxiaoli  阅读(1592)  评论(0编辑  收藏  举报