这个排序算法的复杂度是多少?

What is the complexity of this sorting algorithm?

本文关键字:多少 复杂度 排序 算法      更新时间:2023-10-16
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);
}

我完全理解了mergeSort, bubbleSort的复杂性,但我对这个很困惑。这个算法的复杂度是多少?有人能解释一下吗?

这是傻瓜排序。这个算法的构造是为了表明,业余爱好者不应该在没有正确分析之前实现自己的算法。它的运行时间大约是O(n^3)。

算算并不难。

  • 每次算法调用3次,将当前步骤的输入部分分成3个(相等)部分。:第一次呼叫和第三次呼叫相同。
  • 局部复杂度只是O(1)(这意味着常数),因为它只会做交换,if和k的计算