更新:
我一直在尝试计算在快速排序实现(下面的代码)中进行的比较的数量,但是我注意到只有当我去掉下面一行中的粗体部分时,比较的数量才被正确地计算出来。你知道吗
左\u比较,左\u列表=快速\u排序(未排序的\u列表[:i-1],l,i-2)
我有两个问题要问:
美元
def quick_sort(unsorted_list, l, r):
if len(unsorted_list[l:r + 1]) <= 1:
return 0, unsorted_list
else:
# choose_pivot(input_list) # TODO implement properly later. cd return input_list here.
pivot = unsorted_list[l]
i = l + 1
num_comparisons = r - l
for j in xrange(l + 1, r + 1):
if unsorted_list[j] < pivot:
temp = unsorted_list[i]
unsorted_list[i] = unsorted_list[j]
unsorted_list[j] = temp
i += 1
unsorted_list[l] = unsorted_list[i - 1]
unsorted_list[i - 1] = pivot
left_comparisons, left_list = quick_sort(unsorted_list[:i - 1], l, i - 2)
right_comparisons, right_list = quick_sort(unsorted_list, i, len(unsorted_list) - 1)
return left_comparisons + num_comparisons + right_comparisons, left_list[:i - 1] + [pivot] + right_list[i:]
目前没有回答
相关问题 更多 >
编程相关推荐