【数据结构】时间复杂度的例题
创始人
2024-12-14 15:05:40
0

🎁个人主页:我们的五年

🔍系列专栏:数据结构

🌷追光的人,终会万丈光芒

目录

 🌷例题1:

🌷例题2:

🌷例题3:

🌷例题4:

🌷例题5:

模拟实现可以看成这样:

🌷例题6:

🌷例题7:

🌷例题8:

🌷例题9:


 前言:
这篇文章是关于时间复杂度的一些例题,关于时间复杂度和空间复杂度和算法的计算效率的基本知识点我放在这篇文章。

数据结构:时间复杂度

最后喜欢的铁子可以点点关注,互关私信,感谢大家的支持,祝大家天天开心!

 🌷例题1:

// 请计算一下Func1中++count语句总共执行了多少次? void Func1(int N) {     int count = 0;     for (int i = 0; i < N ; ++ i)     {              for (int j = 0; j < N ; ++ j)          {              ++count;          }     }     for (int k = 0; k < 2 * N ; ++ k)     {          ++count;     }     int M = 10;     while (M--)     {          ++count;     }     printf("%d\n", count); } 

 F(N)=N^2+2*N+10

第一个循环:N^2

第二个循环:2*N

while循环:10

O(N^2)只看最高次项,这就是N^2.

时间复杂度:O(N^2)

🌷例题2:

void Func2(int N) {      int count = 0;      for (int k = 0; k < 2 * N ; ++ k)      {          ++count;      }      int M = 10;      while (M--)      {          ++count;      }      printf("%d\n", count); }

 F(N)=2*N+10

时间复杂度:O(N)

🌷例题3:
 

void Func3(int N, int M) {      int count = 0;      for (int k = 0; k < M; ++ k)      {          ++count;      }      for (int k = 0; k < N ; ++ k)      {          ++count;      }      printf("%d\n", count); } 

 F(N)=M+N

时间复杂度:O(M+N)

🌷例题4:

void Func4(int N) {     int count = 0;      for (int k = 0; k < 100; ++ k)      {          ++count;      }      printf("%d\n", count); } 

F(N)=100

循环次数为常数,所以

 时间复杂度:O(1)

🌷例题5:

// 计算strchr的时间复杂度?

const char * strchr ( const char * str, int character );

strchr函数是在str字符串中寻找字符character,如果找到了就返回该字符的地址,否则返回NULL

模拟实现可以看成这样:

const char * strchr ( const char * str, int character )

{

        while(*str!='\0')

        {

                if(*str==character)

                        return str;

                else

                        str++;

        }

        return NULL;
}

最好的情况基本操作执行了1次,最坏的情况基本操作执行了N次,时间复杂度是考虑最坏的情况,所以

时间复杂度:O(N)

🌷例题6:

void BubbleSort(int* a, int n) {      assert(a);      for (size_t end = n; end > 0; --end)      {          int exchange = 0;          for (size_t i = 1; i < end; ++i)          {              if (a[i-1] > a[i])              {                  Swap(&a[i-1], &a[i]);                  exchange = 1;              }          }          if (exchange == 0)          break;      } } 

 最好的情况基本操作执行了N次,就是已经是拍好的序列,此时exchange=0,直接退出循环

最好的情况基本操作执行了(N-1)!=N*(N-1)/2

而时间复杂度是看最坏情况,而且是估算,所以-1和处以2可以省略。

时间复杂度:O(N^2)

🌷例题7:

int BinarySearch(int* a, int n, int x) {      assert(a);      int begin = 0;      int end = n-1;      // [begin, end]:begin和end是左闭右闭区间,因此有=号      while (begin <= end)      {          int mid = begin + ((end-begin)>>1);          if (a[mid] < x)              begin = mid+1;          else if (a[mid] > x)              end = mid-1;          else              return mid;      }      return -1; } 

 最好情况时一次,最坏情况时log N次

ps:logN在算法分析中表示是底数为2,对数为N。有些地方会写成lgN。

(建议通过折纸查找的方式讲解logN是怎么计算出来的)

时间复杂度:OogN)

🌷例题8:

// 计算阶乘递归Fac的时间复杂度? long long Fac(size_t N) {      if(0 == N)          return 1;           return Fac(N-1)*N; } 

 循环了n次

时间复杂度:O(N)

🌷例题9:

// 计算斐波那契递归Fib的时间复杂度? long long Fib(size_t N) {      if(N < 3)      return 1;       return Fib(N-1) + Fib(N-2); } 

基本操作次数为2^N次,

时间复杂度:O(2^N)

总结:

该文章提供了时间复杂度的一些基本例题,后面还有一篇文章是在真正的题目中进行应用时间复杂度去题,时间复杂度可以去判断一个算法的优劣,从而得到最优解法。

相关内容

热门资讯

终于知道”新上游有挂吗“金花房... 终于知道”新上游有挂吗“金花房卡充值微信房卡充值 添加房卡批售商:微【113857776】复制到微信...
微信金花房卡链接如何购买/微信... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
终于发现!微信玩链接炸金花房卡... 微信游戏中心:炸金花房卡,添加微信【71319951】,进入游戏中心或相关小程序,搜索“微信炸金花房...
终于知道”超稳无敌房卡获取“新... 第二也可以在游戏内商城:在游戏界面中找到 “微信金花,斗牛链接房卡”“商城”选项,选择房卡的购买选项...
头条推荐!金花房卡批发海神众娱... 今 日消息,海神众娱房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
炸金花房间链接游戏房卡/创建金... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
终于知道”新战皇房卡哪里充“新... 终于知道”新战皇房卡哪里充“新道游房卡充值微信房卡充值 添加房卡批售商:微【113857776】复制...
终于发现!炸金花房卡链接在哪弄... 微信游戏中心:炸金花房卡,添加微信【56001354】,进入游戏中心或相关小程序,搜索“微信炸金花房...
头条推荐!金花房卡怎么购买星云... 微信游戏中心:星云大厅房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
我来教你/微信金花房卡怎么弄上... 上游联盟是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
终于知道”新财神房卡充值“牛牛... 终于知道”新财神房卡充值“牛牛房卡哪里有卖微信房卡充值 添加房卡批售商:微【113857776】复制...
一分钟了解“牛牛金花房卡模式代... 人皇大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
终于发现!拼三张房卡哪里买,新... 微信游戏中心:拼三张房卡,添加微信【66336574】,进入游戏中心或相关小程序,搜索“微信拼三张房...
终于知道”新九方房卡到哪里买“... 终于知道”新九方房卡到哪里买“牛牛房卡批发平台 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客服...
正版授权“微信金花链接版有房卡... 九酷大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
终于发现!炸金花的房卡找谁买,... 微信游戏中心:炸金花房卡,添加微信【71319951】,进入游戏中心或相关小程序,搜索“微信炸金花房...
终于知道”新九五如何买房卡“金... 终于知道”新九五如何买房卡“金花牛牛房卡充值 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客服【...
一分钟了解“炸金花房卡链接哪里... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来享受...
终于知道”新全游低价获取分享房... 终于知道”新全游低价获取分享房卡给大家“牛牛房卡充值微信房卡充值 添加房卡批售商:微【1138577...
正规平台有哪些,金花房卡官网金... 正规平台有哪些,金花房卡官网金牛座厅/新西部/房卡链接在哪购买Sa9Ix苹果iPhone 17手机即...