Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1317520
  • 博文数量: 168
  • 博客积分: 2124
  • 博客等级: 大尉
  • 技术积分: 2590
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-16 23:51
文章分类

全部博文(168)

文章存档

2014年(6)

2013年(74)

2012年(71)

2011年(17)

分类: C/C++

2013-08-10 01:12:25

今天就写俩程序,大数相乘和这个数组的重排序,这里还遇到一个问题,老板讲过的literal pool的问题,面试完以后再来看看

明天去华为机试了 ,good luck .       ^_^


点击(此处)折叠或打开

  1. /***************************************
  2. 给定一个数组input[]
  3. 如果数组长度n为奇数,则将数组中最大的元素放到output[]数组最中间的位置,
  4. 如果数组长度n为偶数,则将数组中最大的元素放到output[]数组中间两个位置偏右的那个位置上,
  5. 然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。
  6. 例如:    input[] = {3,6,1,9,7}        output[] = {3,7,9,6,1};
  7.         input[] = {3,6,1,9,7,8}    output[] = {1,6,8,9,7,3}

  8. *****************************************/

  9. /*
  10. void resort(char *input, char *output);
  11. */

  12. #include<stdio.h>
  13. #include<string.h>

  14. void swap(char *p1, char *p2)
  15. {
  16.     char tmp;
  17.     tmp = *p1;    
  18.     *p1 = *p2;
  19.     *p2 = tmp;
  20. }
  21. void resort_array(char *input, char *output)
  22. {
  23.     int len, i, min, j, result;
  24.     char *input_b;
  25.     
  26.     len = strlen(input);

  27.     input_b = malloc(sizeof(char)*(len+1));

  28.     strcpy(input_b,input);

  29.     result = len / 2;
  30.     
  31.     
  32.     for(i = 0;i < len -1; i++)
  33.     {
  34.         min = i;
  35.         
  36.         for(j = i+1; j < len; j++)
  37.             if(input_b[j] < input_b[min])
  38.                 min = j;
  39.         if(min != i)
  40.             swap(&input_b[min], &input_b[i]);            
  41.     }

  42.         output[result] = input_b[len-1];
  43.         
  44.         for(i = 0, j = 1; i < len - 1 ; i++)
  45.         {
  46.             output[result-j] = input_b[len-1-i-1];
  47.             i++;
  48.             j *= -1;
  49.             output[result-j] = input_b[len-1-i-1];
  50.             j *= -1;
  51.             j++;                        
  52.         }

  53.     output[len] = '\0';    
  54. }

  55. int main(int argc, char**argv)
  56. {
  57.     char *p1 = "230165";
  58.     char p2[10] = {0};
  59.     
  60.     resort_array(p1, p2);
  61.     printf("result = %s",p2);
  62.     while(1);
  63. }

阅读(1084) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~