【发布时间】:2015-09-18 17:10:58
【问题描述】:
我想通过此代码了解 shell 排序的最坏情况分析。各位大神能帮我看看吗? while 循环将执行 O(log n) 次,for 循环 O(n) 次;那么复杂性是如何出现的 O(n^2) 呢?一个完整的答案将不胜感激;我已经坚持了一天。
int i, n = a.length, diff = n/2, interchange, temp;
while (diff > 0)
{
interchange=0;
for (i = 0; i < n - diff; i++)
{
if (a[i] > a[i + diff])
{
temp = a[i];
a[i] = a[i + diff];
a[i + diff] = temp;
interchange = 1;
}
}
if (interchange == 0)
{
diff = diff/2;
}
}
【问题讨论】:
-
这似乎不是重复的。我经历了那个,代码和查询都有区别。请不要重复
标签: java algorithm performance shell time-complexity