Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2539708
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2011-05-03 08:29:59

    编写一个程序,要求从一个整数序列中找出最小的元素,使用递归的方法实现。
    我们一般求一个数组的最小元素值,都是通过遍历整个数组,拿一个元素和数组中的每一个元素进行比较,然后计算出,数组中那个元素是最小的元素。
    当使用递归的办法求解数组中元素的最小值,我们可以将一个数组,分成两部分,然后求出两部分中的最小值,当然这里有一个要考虑的情况是,然后元素的个数为奇数个的时候,我们可以将其分为三部分,中间元素,前半部分,后半部分。然后使用递归的方法,求出数组元素中的最小值。
    根据此思想,编写代码如下:
  1. #include <stdio.h>

  2. int getMin(int array[], int n)
  3. {
  4.   int var1,var2,var3;
  5.   if(n == 1) return array[0];

  6.   if(n%2 == 0){
  7.     var1 = getMin(array, n/2);
  8.     var2 = getMin(array+n/2,n/2);

  9.     if(var1 < var2)
  10.       return var1;
  11.     else
  12.       return var2;
  13.   }
  14.   else{
  15.     var1 = getMin(array, n/2);
  16.     var2 = getMin(array n/1, n/2);
  17.     var3 = array[n/2];

  18.     if(var1 < var2){
  19.       if(var1 < var3)
  20.         return var1;
  21.       else
  22.         return var3;
  23.     }
  24.     else{
  25.       if(var2 < var3)
  26.         return var2;
  27.       else
  28.         return var3;
  29.     }
  30.   }
  31. }

  32. int main(int argc, char *argv[])
  33. {
  34.   int array[9] = {11,13,23,56,8,23,11,23,111},var;
  35.   var = getMin(array,9);

  36.   printf("the minum element of this array id %d\n",var);
  37.   return 0;
  38. }
程序执行结果如下:
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ gcc 6.6.c
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out 
the minum element of this array id 8

阅读(4015) | 评论(0) | 转发(0) |
0

上一篇:验证四方定理

下一篇:寻找同构数

给主人留下些什么吧!~~