2013-12-18 89 views
0

我對理解大O表示法和計算複雜度等問題有許多疑問。我認爲我在互聯網上找到的所有複雜數學都令我眼花繚亂。排序方法的大O表示法

我想繪製一個圖來表示插入排序和shell排序的效率。

我想我明白,shell排序的最壞情況是n^2,最好的情況是nlogn。這是所有的貝殼類?我如何用圖的相關時間軸表示這一點?

任何幫助將不勝感激,我很失落。

這裏是我的代碼,如果我的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

如何代表這在時間和相關的軸的圖形? (x) - 垂直軸(y)上的Nlot2(最差情況) - 同樣繪製NlogN(最好的情況下)情況)在縱軸(y)