C语言-递归法寻找数组中最小值

Posted 灯火阑处

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言-递归法寻找数组中最小值相关的知识,希望对你有一定的参考价值。

int getMin(int array[], int n) 
    int val1, val2, val3;
    if (n == 1)
        return array[0];
    if (n % 2 == 0) 
        val1 = getMin(array, n / 2);
        val2 = getMin(array + n / 2, n / 2);
        if (val1 < val2)
            return val1;
        else
            return val2;
    
    if (n % 2 != 0) 
        val1 = getMin(array, n / 2);
        val2 = getMin(array + n / 2 + 1, n / 2);
        val3 = array[n / 2];
        if (val1 < val2) 
            if (val1 < val3)
                return val1;
            else
                return val3;
         else 
            if (val2 < val3)
                return val2;
            else
                return val3;
        
    
    return 0;

int main(int argc, const char *argv[]) 
    int array[10] = 11, 13, 23, 44, 4, 43, 11, 23, 111, -1, val;
    val           = getMin(array, sizeof(array) / sizeof(int));
    printf("The minum element of the array is %d \\n", val);
    return 0;

结果:

以上是关于C语言-递归法寻找数组中最小值的主要内容,如果未能解决你的问题,请参考以下文章

分治法解决寻找数组中最大最小值的问题

⭐算法入门⭐《线性枚举》简单06 —— LeetCode 153. 寻找旋转排序数组中的最小值

分治法求一个数组中最大最小值

基础算法 分治法求最大最小元

lintcode:寻找旋转排序数组中的最小值 II

C语言中选择排序法具体是怎样的?