首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据结构和算法

数据结构和算法

作者头像
用户8247415
发布2021-04-13 16:05:30
发布2021-04-13 16:05:30
31600
代码可运行
举报
文章被收录于专栏:网页前端网页前端
运行总次数:0
代码可运行

算法和数据结构

著名计算机科学家N.Wirth教授提出一个公式: 算法+数据结构=程序 算法有五个重要特性 1.有穷性 2.确定性 3.可行性 4.输入 5.输出 要得到一个高效的算法,在设计算法时,就要对算法的执行时间有一个客观的分析。 一般的,把算法中包含的简单操作的次数的多少称为算法的时间复杂度,它是一个算法运行的相对量度。

代码语言:javascript
代码运行次数:0
运行
复制
int sum(int a[], int n)
{
	int s = 0, i;
	for (i = 0;i < n;i++)
		s += a[i];
	return s;
}
int sum(int a[], int n)
{
	int s = 0,i = 0;    //1,1
	while (i < n)       //n+1
	{
		s += a[i];      //n
			i++;        //n
	}
	return s;           //1
}

这一串代码时间复杂度就是T(n)=3n+4 以下是几个计算时间复杂度的例子大家应该可以看懂

代码语言:javascript
代码运行次数:0
运行
复制
//矩阵相加
void matrixxadd(int a[][n], int b[][n], int c[][n])
{
	int i, j;                         //1,1
	for (i = 0;i < n;i++)             
		for (j = 0;j < n;j++)
			c[i][j] = a[i][j] + b[i][j];
}                                                        
//4n*n+5n+2
代码语言:javascript
代码运行次数:0
运行
复制
x=x+1                           //1

for(i=1;i<=n;i++)               //n
x=x+1

for(i=1;i<=n;i++)               //n*n
for(j=1;j<=n;j++)
x=x+1

for (i = 1;i <= n;i++)          //n*(n-1)/2
for (j = i;j <= n;j++)
x = x + 1


void bubble_sort(int a[], int n)
{
	int temp, i, j, change = 1;
	for (i = n - 1, change = 1;i > 0 && change = 1;i--)
	{
		change = 0;
		for(j=0;j<i;j++)
			if (a[j] > a[j + 1])
			{
				temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
				change = 1;
			}
	}
}                                 
 //最坏的情况n(n+1)/2

实际上,一般也没有必要精确的计算算法的时间复杂度,只要大致计算数量级就可以了。 T(n)=O(f(n)) 给大家推荐一篇文章,对于时间复杂度讲述的十分详细。 时间复杂度

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 算法和数据结构
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档