数据结构和算法

算法和数据结构

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

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
以下是几个计算时间复杂度的例子大家应该可以看懂

//矩阵相加
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
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))
给大家推荐一篇文章,对于时间复杂度讲述的十分详细。
时间复杂度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秃了秃噜头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值