A18700. 在对长度为n(n≥1) 的数组进行归并排序的过程中, mergeArray 函数(合并两个有序子数组的操作)被调用的次数是( )。MAXN = 100005 a = [0] * MAXN tempArr = [0] * MAXN def mergeArray(left, mid, right): i = left j = mid + 1 k = left while i <= mid and j…
单选题
困难
知识点
题目描述
在对长度为n(n≥1) 的数组进行归并排序的过程中, mergeArray 函数(合并两个有序子数组的操作)被调用的次数是( )。
MAXN = 100005
a = [0] * MAXN
tempArr = [0] * MAXN
def mergeArray(left, mid, right):
i = left
j = mid + 1
k = left
while i <= mid and j <= right:
if a[i] <= a[j]:
tempArr[k] = a[i]
i += 1
else:
tempArr[k] = a[j]
j += 1
k += 1
while i <= mid:
tempArr[k] = a[i]
i += 1
k += 1
while j <= right:
tempArr[k] = a[j]
j += 1
k += 1
for p in range(left, right + 1):
a[p] = tempArr[p]
def mergeSort(left, right):
if left >= right:
return
mid = left + (right - left) // 2
mergeSort(left, mid)
mergeSort(mid + 1, right)
mergeArray(left, mid, right)选项(单选)
答案解析
详细答案解析为会员权益,按每日次数查看。
开通 / 升级会员
上一题
下一题