如果列表是预先排序的(最好的情况),我对shell排序的运行时间感到困惑。它是O(n)还是O(n log n)?在预先排序的列表(最好的情况下)上运行shell的排序时间
for(k=n/2; k>0; k/=2)
for(i=k; i<n; i++)
for(j=i;j>k; j-=k)
if(a[j-k]>a[j]) swap
else break;
Shell排序是基于插入排序,并插入排序为O(n)的运行时间为预排序的名单,但是,通过引入间隙(最外层循环),我不知道,如果它使对预先排序的列表进行shell排序O(n log n)的运行时间。
感谢对帮助