首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这个算法的时间复杂度如何算

2012-10-18 
这个算法的时间复杂度怎么算?C/C++ codevoid sort(int a[], int n){ for (int gap n / 2 gap 0 gap

这个算法的时间复杂度怎么算?

C/C++ code
void 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

热点排行