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;
}
}