使用单个递归结构伪代码查找最小值和最大值

时间:2018-12-12 00:06:02

标签: arrays algorithm recursion pseudocode

我正在寻找一种单一的递归结构算法来查找数组的最大值和最小值。我在这里找到了以下伪代码:

FindMaxAndMin(A, max, min)
    if (|A| == 1)
        if (max < A[1])
            max = A[1]
        if (min > A[1])
            min = A[1]
        return (min, max)
    cen = |A| /2
    l = A[:cen-1]
    h = A[cen:]
    (min, max) = FindMaxAndMin(l, min, max)
    (min, max) = FindMaxAndMin(h, min, max)
    return (min, max)

所以我首先想知道这是否算作单个递归结构,因为它全部发生在第一个if下。如果这是单个递归结构,我首先想知道| A |是什么?代表,找不到它在网上的任何地方,例如A = (3,2,4,1)时该如何工作?

1 个答案:

答案 0 :(得分:1)

| A | 只是数组的长度

您可以调试并按照此处的步骤

  

(因为我使用js我无法返回2个值,所以我将其更改为   数组

     

请记住,minMax [0] =分钟

     

和minMax [1] =最大

     

i使用 MAX_SAFE_INTEGER

初始化了minMax [0](分钟)      

和带有 MIN_SAFE_INTEGER 的minMax [0](最大值))

const FindMaxAndMin = (A, minMax)=>{
    if (A.length === 1){
        if (minMax[1] < A[0])
            minMax[1] = A[0]
        if (minMax[0] > A[0])
            minMax[0] = A[0]
        return minMax
    }
    let cen = A.length /2
    let l = A.slice(0,cen)
    let h = A.slice(cen,A.length)
    minMax = FindMaxAndMin(l, minMax)
    minMax = FindMaxAndMin(h, minMax)
    return minMax
  }
  
  console.log(FindMaxAndMin([3,4,1,2],[Number.MAX_SAFE_INTEGER , Number.MIN_SAFE_INTEGER]))