直接插入排序的移动次数怎么计算附代码
直接插入排序的移动次数可以根据代码中的赋值语句来计算,每次将一个元素插入到已经排好序的序列中时,需要将该元素之后的所有元素都向右移动一位,因此移动次数就等于已排序序列中比该元素大的元素个数。以下是直接插入排序的代码实现及注释:
def insertion_sort(arr):
n = len(arr)
for i in range(1, n):
# 将arr[i]插入到已经排好序的序列中
j = i - 1
while j >= 0 and arr[j] > arr[i]:
j -= 1
# j+1到i-1之间的元素都需要向右移动一位
temp = arr[i]
for k in range(i, j+1, -1):
arr[k] = arr[k-1]
arr[j+1] = temp
return arr
在上述代码中,每次将一个元素插入到已经排好序的序列中时,需要进行一次while循环来找到插入位置,并且需要进行一次for循环来将插入位置之后的所有元素向右移动一位。因此,移动次数的计算公式为:
移动次数 = ∑(i=1 to n-1) j+1 - i
其中,j表示已排序序列中比arr[i]大的元素的下标
原文地址: https://www.cveoy.top/t/topic/cYqj 著作权归作者所有。请勿转载和采集!