有序数组合并

题目描述:

把两个有序数组合并成一个数组,第一个数组的空间正好可以容纳两个数组的元素。

分析

如下图所示:

从后向前覆盖可以防止丢失数据。

代码

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
arr1 = [None for k in range(0,6)]
arr1[0] = 1
arr1[1] = 3
arr1[2] = 5
arr2 = [2,4,6]
def (arr1,arr2):
l = len(arr2) - 1
k = len(arr1) - 1
i = l
j = l
while(i >= 0 and j >= 0):
if(arr1[i] < arr2[j]):
arr1[k] = arr2[j]
k -= 1
j -= 1
else:
arr1[k] = arr1[i]
k -= 1
i -= 1
if(j >= 0):
while(j >= 0):
arr1[k] = arr2[j]
k -= 1
j -= 1
merge(arr1,arr2)
print(arr1)