编写一个程序,要求从一个整数序列中找出最小的元素,使用递归的方法实现。
我们一般求一个数组的最小元素值,都是通过遍历整个数组,拿一个元素和数组中的每一个元素进行比较,然后计算出,数组中那个元素是最小的元素。
当使用递归的办法求解数组中元素的最小值,我们可以将一个数组,分成两部分,然后求出两部分中的最小值,当然这里有一个要考虑的情况是,然后元素的个数为奇数个的时候,我们可以将其分为三部分,中间元素,前半部分,后半部分。然后使用递归的方法,求出数组元素中的最小值。
根据此思想,编写代码如下:
- #include <stdio.h>
-
-
int getMin(int array[], int n)
-
{
-
int var1,var2,var3;
-
if(n == 1) return array[0];
-
-
if(n%2 == 0){
-
var1 = getMin(array, n/2);
-
var2 = getMin(array+n/2,n/2);
-
-
if(var1 < var2)
-
return var1;
-
else
-
return var2;
-
}
-
else{
-
var1 = getMin(array, n/2);
-
var2 = getMin(array + n/2 + 1, n/2);
-
var3 = array[n/2];
-
-
if(var1 < var2){
-
if(var1 < var3)
-
return var1;
-
else
-
return var3;
-
}
-
else{
-
if(var2 < var3)
-
return var2;
-
else
-
return var3;
-
}
-
}
-
}
-
-
int main(int argc, char *argv[])
-
{
-
int array[9] = {11,13,23,56,8,23,11,23,111},var;
-
var = getMin(array,9);
-
-
printf("the minum element of this array id %d\n",var);
-
return 0;
-
}
程序执行结果如下:
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) |