【发布时间】:2013-01-24 04:29:17
【问题描述】:
for (int p=1; p < a.size(); p++) {
int tmp = a[p];
for(j=p; j>0 && tmp < a[j-1]; j--) {
a[j] = a[j-1];
}
a[j] = tmp;
}
我无法确定插入排序的最坏情况。 所以,给定的数组是降序排列的,我们要按升序排列。
外循环遍历数组。因此,它运行(n 次)。在)
int tmp=a[p] ---- 这个语句被执行了 n 次。在)
内部循环执行 (1+2+3+4+5+6+.... +n-1) 次。 O(n^2)
a[j]= tmp-------- 该语句被执行 n 次。 O(n)
我不确定如何找到插入排序的运行时间? 如果可以,请纠正我的工作。 谢谢。
【问题讨论】:
-
最坏情况的运行时间为 O(n^2)。但我不确定如何获得它。
标签: c++ sorting c++11 time-complexity insertion-sort