01-基础篇

01-基础篇

编程语言基础

变量类型-指针

int *p=&a;//指针p存储了a的地址
int b=*p;//取得指针p所指变量中的值
NULL 不指向任何地址的特殊标记,值为0,初始化指针常用 int *p=NULL;

变量类型-结构体

typedef struct{
	int a;
	float b;
	...
}结构体名;

typedef struct 结构体名{
	int a;
	float b;
	struct 结构体名 *d;
	...
}结构体名;

函数

引用型定义
/*调用getResult后result的值变为1*/
int result = 0;
void getResult(int &r)//注意‘&’
{++r;}
调用:getResult(result);
引用型定义-指针
int *p = NULL;
void gerResult(int *&p)//注意‘&’
{
	...
	P=q;
	...
}
调用:getResult(p);

存储结构

顺序结构
顺序存储支持随机存取
链式结构
typedef struct LNode{
	int data;
	struct LNode *next;
}LNode;

//定义节点
LNode *L;
L=(LNode*)malloc(sizeof(LNode));//为LNode开辟空间并返回地址
A->next=B;//存储B节点的地址到A的next分量中

算法分析基础

时间复杂度-(默认求最坏情况)

image-20210913224639252
T(N)为你的程序真实执行时间图像
cf(N)是最差的程序执行时间走向(时间增长)---反映给boss----有意义的
cg(N)是指最优的程序执行时间走向(时间缩短)----不现实的
image-20210913225223210
T(N)为你的程序真实执行时间图像
因为T(N)已经很难找所以ch(N)很难找
image-20210913225425820
O(N)表示法:
	给了一个粗略上界但不一定是最小上界
	包含:
		1.Θ表示法
		2.o表示法
简化问题
把(加减乘除、比较和赋值)都视作耗时相同的运算。
控制语句函数时间复杂度分析
普遍方法计算时间复杂度
int f(int N){
	int i,sum;
	sum=0;				//执行一次
	for(i=0;i<N;++i)	//(i=0执行一次,i<N执行N+1次,++i执行N次)=2N+2次
	{
		sum +=i*i*i;	//(2乘1加1赋值)循环N次=4N次
	}
	return sum;			//执行一次
}
总共6N+4次;
则时间复杂度为O(N);
简便方法总结
  1. 一次循环运行时间=循环内语句的运行时间*循环次数;

  2. 嵌套式循环运行时间=最内层语句执行次数*总循环次数;

    for(int i=0;i<N;++i){
    	for(int j=0;j<N;++j){
    		++sum;
    	}
    }
    时间复杂度O(N*N)
    
  3. 并列的两个循环运行时间与执行次数数量级大的那个相同

    for(int i=0;i<N;++i){
    	for(int j=0;j<N;++j){
    		++sum;
    	}
    }
    for(int i=0;i<N;++i){
    	++sum;
    }
    时间复杂度O(N*N)
    
递归函数时间复杂度分析
void mergeSort(int arr[],int low,int high){
	if(low<high){
		int mid = (low+high)/2;
		mergeSort(arr,low,mid);		//low~mid近似于(low+high)/2
		mergeSort(arr,mid+1,high);	//mid+1~high近似于(low+high)/2
		merge(arr,low,mid,high);		
	}
}
普通方法

设mergeSort时间复杂度为T(n)

image-20210913233435993

image-20210913233523787image-20210913233633884image-20210913233843475image-20210913234204827image-20210913234231236

简便方法

f(n)代表除递归函数之外的语句执行次数

image-20210913234538409

常考题型

第一题
image-20210913234755468 image-20210913235031885 image-20210913235141203 image-20210913235310068
第二题
image-20210913235536277
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Black_Me_Bo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值