这个排序算法的复杂度是多少?
template<class T> void sSort(T *A, int first, int last)
{
if(A[first]>A[last])
swap(A[first],A[last]);
if(first+1>=last)
return;
double k = floor((last-first+1)/3);
sSort(A,first,last-k);
sSort(A,first+k,last);
sSort(A,first,last-k);
}
我完全理解归并排序、冒泡排序的复杂性,但我对此感到非常困惑。该算法的复杂度是多少。谁能解释一下吗?
template<class T> void sSort(T *A, int first, int last)
{
if(A[first]>A[last])
swap(A[first],A[last]);
if(first+1>=last)
return;
double k = floor((last-first+1)/3);
sSort(A,first,last-k);
sSort(A,first+k,last);
sSort(A,first,last-k);
}
I perfectly understood the mergeSort, bubbleSort complexities but i'm so confused in this one. What is the complexity for this algorithm. Can anyone explain?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是傀儡排序。这是一种算法,旨在表明业余爱好者在没有首先正确分析它们的情况下确实不应该实现自己的算法。其运行时间约为O(n^3)。
This is the Stooge sort. It's an algorithm constructed to show that amateurs really shouldn't implement their own algorithms without properly analyzing them first. Its running time is approximately O(n^3).
计算起来并不难。
It's not too hard to do the calc.