-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMerge.m
More file actions
33 lines (31 loc) · 890 Bytes
/
Merge.m
File metadata and controls
33 lines (31 loc) · 890 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
%二路归并函数:
%1.申请一个大小为两个有序子数组大小之和的数组空间
%2.设定两个指针,分别指向两个有序子数组的起始位置
%3.比较两个指针所指元素,将小的元素放入合并空间,并向后移动小元素的指针一个位置。
% 重复步骤3,直到某一指针超出子数组尾,将另一子数组剩下的所有元素复制到合并数组尾。
function A = Merge(A,l,r,mid)
i = l;
j = mid+1;
k = 1;
while i<=mid && j<=r %当i,j都没有超出子数组尾时
if A(i)<A(j) %比较i,j所指元素的大小,将小数放入A中
B(k) = A(i);
i = i+1;
k = k+1;
else
B(k) = A(j);
j = j+1;
k = k+1;
end
end
while i<=mid %当j超出子数组尾,将i所指子数组剩余元素复制到B后
B(k) = A(i);
i = i+1;
k = k+1;
end
while j<=r %当i超出子数组尾,将j所指子数组剩余元素复制到B
B(k) = A(j);
j = j+1;
k = k+1;
end
A(l:r) = B(1:k-1);