一道有趣的面试题

题目是这样的(c++):

已知一个字符指针 char *a="865410358748......6487534"; 里面由数字组成的大数字字符,现在的要求是

把这个字符串每个数字按照大小倒序排序。

刚一看到,浮现脑海里的解决办法是 使用冒泡排序

不过,仔细想了想,都是数组组成的字符串,肯定有特殊的地方,最后想到了这个办法:

字符串是由0-9字符组成的,所以外循环 

for  int i = 0; i<=9;i++{

      

}

因此,排序算法 转化为 查找  所有数字i的都排在前面 

只需要 存储此时 的char 和当前转换的位置 

如下:

char *a = "...";

char tmp;

int currentIndex = 0;

for  int i = 0; i<=9;i++{

      for(int j=i;j<a.lenght;j++){

           if(a[j]==i){

                 currentIndex和j交换位置 

                 currentIndex++;

}

}

}

}

 

当然上面的只是简单写了伪代码,实际上 字符指针所指向的内容是不能改变的,因为是保存在常量那里,所以还需要strcpy 出一个字符数组来操作 然后返回这个字符数组结果

posted @ 2012-08-13 17:42  dodohua  阅读(193)  评论(1编辑  收藏  举报