<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> </body> <script> function merge(A, p, q, r) { let A1 = A.slice(p, q) let B1 = A.slice(q, r) A1.push(Number.MAX_SAFE_INTEGER) B1.push(Number.MAX_SAFE_INTEGER) for (let k = p, i = 0, j = 0; k < r; k++) { A[k] = A1[i] < B1[j] ? A1[i++] : B1[j++] console.log(A) } } const B = [2, 4, 6, 1, 3, 5] merge(B, 1, 3, 5) // console.log(B) </script> </html>
[1,3,5,2,4,6]
=====>
(1)
拆分
A1 [1,3,5]
B1 [2,4,6]
(2)循环
1.k=0,i=0;j=0;
A【0】 = A1[0] < B1[0] 的判断结果为
A[0] = A1[0] = 1,i+1=1
得到数组
A[1,3,5,2,4,6]
2.k=1;i=1;j=0
A【1】 = A1[1] < B1[0] 的判断结果为
A[1] = B1[0] = 2
得到数组
A[1,2,5,2,4,6] j+1=1
3.k=2;i=1;j=1
A【2】 = A1[1] < B1[1] 的判断结果为
A[1] = A[1] = 3
得到数组
A[1,2,3,2,4,6] i+1=2
3.k=3;i=2;j=1
A【3】 = A1[2] < B1[1] 的判断结果为
A[3] = B[1] = 4
得到数组
A[1,2,3,4,4,6] j+1=2
4.k=3;i=2;j=2
A【4】 = A1[2] < B1[2] 的判断结果为
A[4] = B[2] = 5
得到数组
A[1,2,3,4,5,6] i+1=3
4.k=4;i=3;j=2
A【5】 = A1[3] < B1[2] 的判断结果为
A[5] = B[2] = 6
得到数组
A[1,2,3,4,5,6] j+1=3
5.k=6 跳出循环
A[1,2,3,4,5,6]