将O方法排序成图的大O表示法

时间:2013-12-18 01:08:27

标签: algorithm sorting big-o

我在理解大O符号和计算复杂性等方面遇到了很多麻烦。我认为我在互联网上发现的所有复杂数学都让我眼花缭乱。

我试图绘制一个图表来表示插入排序和shell排序的效率。

我想我明白shell排序的最坏情况是n ^ 2,最好的情况是nlogn。这适用于所有shell类型吗?如何在具有相关时间轴的图表中表示这一点?

任何帮助都会非常感激,我很失落。

如果相关,这是我的shell排序代码。

int const size = 5;
int i, j, increment, temp;
int array[size]={4,5,2,3,6}, i1=0;
//split the array into segments between the elements unil we reach beginning of array    
for(increment = size/2;increment > 0; increment /= 2)
{
    //increment through elements in array for comparison starting point
    for(i = increment; i<size; i++)
    {
        //set temp to last element in array segment
        temp = array[i];
        //decrement index by size of gap
        for(j = i; j >= increment ;j-=increment)
        {
            //compare element with element gap length behind
            if(temp < array[j-increment])
            {
                //swap elements if less than gap element
                array[j] = array[j-increment];
            }
            else
            {
                //if not break from loop
                break;
            }
        }
        array[j] = temp;
    }
}

1 个答案:

答案 0 :(得分:1)

  

如何在具有相关时间轴的图表中表示这一点?     - N,输入的大小,是您的自变量,以横轴(x)表示     - 绘制垂直轴(y)中的N ^ 2(最坏情况)     - 还绘制垂直轴(y)中的NlogN(最佳情况)