使用单一递归结构伪代码查找最小值和最大值
Find Min and Max values with single recursive structure 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)
时,它如何通过调用调用?
|一个| 就是数组的长度
您可以调试并按照此处的步骤操作
(becuse i use js i couldnt return 2 values thats way i changes it to
an array
keep in mind that minMax[0] = min
and minMax[1] = max
i initilized minMax[0] (min) with MAX_SAFE_INTEGER
and minMax[0] (max) with MIN_SAFE_INTEGER)
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]))
我正在寻找一个单一的递归结构算法来查找数组的最大值和最小值。我在这里找到了以下伪代码:
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)
时,它如何通过调用调用?
|一个| 就是数组的长度
您可以调试并按照此处的步骤操作
(becuse i use js i couldnt return 2 values thats way i changes it to an array
keep in mind that minMax[0] = min
and minMax[1] = max
i initilized minMax[0] (min) with MAX_SAFE_INTEGER
and minMax[0] (max) with MIN_SAFE_INTEGER)
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]))