这个算法的时间复杂度如何算
这个算法的时间复杂度怎么算?C/C++ codevoid sort(int a[], int n){ for (int gap n / 2 gap 0 gap
这个算法的时间复杂度怎么算?
C/C++ codevoid sort(int a[], int n){ for (int gap = n / 2; gap > 0; gap /= 2) for (int i = gap; i < n; ++i) for (int j = i - gap; j >= 0 && a[j + gap] < a[j]; j -= gap) { int temp = a[j]; a[j] = a[j + gap]; a[j + gap] = temp; }}
//需要计算过程
[解决办法]网易公开课 算法导论 第2课有讲 貌似
但个人认为 执行的循环次数 不能被 条件所迷惑 有时候代码也会玩技巧的 比如
#include <iostream>
int main()
{
int i =0;
int a[5];
int j=0;
for(i=0; i <=5; i++)
{
if(5==i )
{
a[i] = j++;
}
else
{
printf("1次\n");
}
}
return 0;
}
[解决办法]shellsort要求的数学基础比较高,基本没人会耐心的敲那一大堆符号
偶给你找了个wiki上的回答,你自己看吧
http://en.wikipedia.org/wiki/Shellsort