0
点赞
收藏
分享

微信扫一扫

从零开始的C/C++数据结构 02 常见算法时间函数增长情况分析

新鲜小饼干 2022-04-23 阅读 63

本节重点:

1.理解常见算法时间函数的增长情况

2.输出各函数的值

3.学会调用math.h 中的函数

4.学会只使用一个函数调用多个函数

声明:

以下内容仅供学习,如有侵权,联系作者删除。

参考文献:数据结构上机实验指导p4

代码段展示:

求对数函数和指数函数的值:(调用头文件中sqrt函数)

其中运用了对数函数性质log10(n)/log10(2)=log2(n)(以二为底数,n为真数)

#include<stdio.h>
#include<math.h>
//目的:理解常见算法时间函数的增长情况
//内容:输出 各函数的值
double log2(double n){//求对数函数的值 
	return log10(n)/log10(2);
} 
long exponent(int n){//求指数函数的值 
	long s=1;
	for(int i=1;i<=n;i++)
		s*=2;
	return s;
}

求阶乘函数的值:(简单的for循环和连乘)

long factorial(int n){//求n!的值 
	long s=1;
	for(int i=1;i<n;i++){
		s*=i;
	}
	return s;
} 

 输出函数:

void fun(int n){
	printf("log2(n) sqrt(n) n nlog2(n) n^2 n^3 2^n n!\n");
	printf("=========================================\n");
	for(int i = 1;i<=n;i++){
		printf("%5.2f\t",log2(i));       //log2(n)
		printf("%5.2f\t",sqrt(i));       //n^1/2  
		printf("%2d\t",i);               //n
		printf("%7.2f\t",i*log2(i));     //nlog2(n)  
		printf("%5d\t",i*i);             //n^2
		printf("%7d\t",i*i*i);           //n^3
		printf("%8d\t",exponent(i));     //2^n
		printf("%8d\t",factorial(i));    //n!                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
	}
}//用一个函数封装之前的计算函数,然后使用主函数进行输入后输出这个函数,提高效率

主函数:

int main(){
	int n=10;
	fun(n);
	return 1;
}

注意到,主函数仅调用了一个函数!!!函数封装的重要性

举报

相关推荐

0 条评论