Algorithm 插入排序中比较和交换之间的差异
下面给出了应用于数组a(基于零的索引)的插入排序算法的伪代码。 def比较(a、b): 如果a>b,则返回1 否则返回-1Algorithm 插入排序中比较和交换之间的差异,algorithm,sorting,Algorithm,Sorting,下面给出了应用于数组a(基于零的索引)的插入排序算法的伪代码。 def比较(a、b): 如果a>b,则返回1 否则返回-1 for i : 1 to length(A) j = i - 1 while j > 0 if compare(A[j-1], A[j]) > 0 swap(A[j], A[j-1]) j = j - 1 else break 给
for i : 1 to length(A)
j = i - 1
while j > 0
if compare(A[j-1], A[j]) > 0
swap(A[j], A[j-1])
j = j - 1
else break
给定一个整数数组A,当应用于A时,通过上述算法查找比较函数调用数和交换函数调用数之间的差异
让我们以A={1,2,4,3}为例。如果我们对一个函数应用上面的插入排序,我们将按以下顺序调用比较和交换函数的序列
compare (A[0], A[1])
compare (A[1], A[2])
compare (A[2], A[3])
swap (A[2], A[3])
compare (A[1], A[2])
这里比较函数调用4次,交换函数调用1次。答案是4-1=3
我需要在不运行实际插入排序算法的情况下以最佳方式找到差异,该算法需要O(n^2)。在
循环时将一个计数器置于循环中,在if
条件下将另一个计数器置于循环中。
这两个的减法将给出答案。对于每个i
从2
到length(A)
的比较
调用的数量将比交换
调用的数量多一个,除了当前元素在1
到i
(在这种情况下,当j
变为0
时,我们退出循环)。答案将是length(A)-1-最小出现次数
minElement = A[1] // one-based array
result = length(A) - 1
for i = 2 to length(A)
if A[i] < minElement
minElement = A[i]
result = result - 1
minElement=A[1]//基于一个的数组
结果=长度(A)-1
对于i=2到长度(A)
如果A[i]
问题的最后一行是关于这一点,为了更具体,引用是我需要在不运行实际插入排序算法的情况下,以最佳方式找到差异,该算法需要O(n^2).
@DAle我现在读了,但我个人认为,如果我们将复杂性降低到这一点以下,它将不会保持插入排序。它可以称为其他排序技术then@Sandeep,但他不需要同时对元素进行排序all@IvayloStrandjev在这种情况下,我们可以从最后插入的元素进行插入比较,并从piv向前或向后移动ot取决于结果,数字是否大于或小于枢轴。“以最佳方式找到差异”???