算法学习一(概述)

本文介绍了算法与数据结构的基本概念,强调了它们在解决问题时的重要性。算法是问题解决的高效方法,而数据结构是算法的基础,如线性结构、树和图等。文章探讨了时间复杂度和空间复杂度作为衡量算法效率的标准,通过实例解释了线性和对数时间复杂度。同时,提到了常量空间和线性空间等空间复杂度的概念。
摘要由CSDN通过智能技术生成

本文章是我在重新学习算法的时候的笔记。如果有幸帮助到了你那再好不过了~如果有错误欢迎指正!文章内容是根据《漫画算法小灰的算法之旅》学习得来的!

概述

什么是算法?
根据我的理解,算法就是对于一个问题的解决方法,当然这个解决方法是越高效越好。
什么是数据结构?
数据结构是算法的基石,它是用来组织、管理、存储数据的。针对相同的问题,不同的数据结构可能会产生不同效果。
数据结构的组成方式有:
线性结构:数组、链表以及队列、栈、哈希表等等。
:二叉树等等
:图的结构更加复杂。
时间复杂度,空间复杂度
前面说算法越高效越好,那么怎样衡量高效与否呢?那就是时间空间复杂度。
①时间复杂度
在说时间复杂度之前首先要提的就是基本操作执行次数,因为时间复杂度就是把程序的执行时间函数T(n)简化为一个数量级

先看书上的一个例子

void eat1(int n){
	for(int i=0;i<n;i++){
	System.out.println("等待一分钟");
	System.out.println("等待一分钟");
	System.out.println("吃一厘米面包一分钟");
	}
}

由上可知每吃一厘米的面包需要三分钟。该程序执行n次,则T(n)=3n;线性

void eat2(int n){
	for(int i=n;i>1;i/=2){
		System.out.println("等待一分钟");
	 	System.out.println("等待一分钟");
	 	System.out.println("等待一分钟");
	 	System.out.println("等待一分钟");
		System.out.println("吃剩余面包的一半");
		}
	}

由上可知,每次吃一半,即除以二,每次吃面包需要五分钟。T(n)=5logn(以2为底)。对数
还有常数、指数型等等
时间复杂度,针对第一种情况就是O(n),第二种O(logn),常数就是O(1)等等。

评判时间复杂度根据程序执行时间从小到大排列为 : 常对幂指阶
即当算法的时间复杂度为常数时,算法越高效。
②空间复杂度
常量空间:O(1)存储空间大小固定,且没有开辟新的存储空间。,
线性空间:O(n),例如线性数组,并且集合大小和输入规模n成正比。
还有二维空间,递归空间等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值