确定特定插入排序的运行时间

时间:2017-03-26 08:22:25

标签: algorithm sorting insertion

假设数组长度为n,则数组按1和0排列, 从第一个索引到索引t只有1个, 从索引t + 1到n,只有0' s。 例子[1,1,1,1 ....,1,0,0 .... 0,0,0]

插入排序算法:

InsertionSort(Input: integer n, array A)
{
 for j = 1 to n {
 newnum = A[j]
 i = j-1
 while ( i > 0 and newnum < A[i] )
 {
 A[i+1] = A[i]
 i = i-1
 }
 A[i+1] = newnum
 }
}

这是我到目前为止所得到的:

\ sum _1 ^ n:\ left(c1 + \ sum _1 ^ {n-t} c2:\ right)

1 个答案:

答案 0 :(得分:0)

内部while循环将第一个0移动到1列表左侧1列表的右侧。有t 1结束,(n - t) 0完全移动。

因此你有t * (n - t)

您可能希望也可能不希望在到达阵列中第一个t所需的时间内添加另一个0