算法基础简介

本文详细介绍了算法和数据结构的概念及其关系。算法是解决问题的公式和逻辑,而数据结构是数据管理的形式,两者相互依存。文章通过实例解释了常见的时间复杂度和空间复杂度,如O(1), O(logn), O(n), O(n²)等,并强调了它们在评估算法效率中的重要性。同时,还探讨了不同数据结构如线性、树形和图结构在算法实现中的应用。

一、什么是算法

        在数学领域,算法是为了解决某一类问题的公式和思想。
        在计算机领域,本质是一些计算机指令,解决特定运算和逻辑问题。
        算法的掌握程度,一方面可以检验程序员对计算机底层的了解,一方面也可以衡量程序员的思维逻辑能力。

二、什么是数据结构

        数据结构是数据的数据管理和组织的格式,使用目的是为了更高效的访问和修改数据。

1、数据结构的组成方式

1.1 线性结构

在这里插入图片描述

        包含数组、链表、栈、队列等

1.2 树形结构

在这里插入图片描述
        比较常用的是二叉树、二叉堆等

1.3 图

在这里插入图片描述
        比较复杂的数据结构,在图中会呈现出多对多的关联关系。

1.4 其他类型数据结构

在这里插入图片描述
        基本都是由基本数据结构演变而来,作用是为了解决某些特定问题。例如哈希表、跳表等。

三、数据结构和算法的关系

        数据结构是算法的基石。如果算法是高速公路上行驶的汽车,那么数据结构就是高速公路。
        不同的算法会采用不同的数据结构。例如:①堆排序算法中用的是二叉堆数据结构。②冒泡排序算法用的是数组数据结构。

四、算法的好坏标准

        一次代码运行的时间和所占用的内存决定的这个代码的好坏。
        算法最重要的两个标准:空间复杂度、时间复杂度。
        复杂度也叫渐进复杂度,包括时间复杂度和空间复杂度,用来分析算法执行效率和数据规模之间的增长关系。

函数和复杂度的转换原则
① 如果是常量级,则使用常数1表示。
② 只保留函数中的最高阶项。
③ 如果最高阶项存在,则省去最高阶项前面的系数。

1、时间复杂度

时间复杂度是算法执行的时间成本

1.1 常见时间复杂度

1.1.1 O(n)

        张三买了一屉包子,一屉包子中有10个,没三分钟吃掉一个。那么吃掉这一屉包子需要多久?
        答案:3*10=30min。
        如果有n个包子,可以记做T(n)=3n。转换为时间复杂度就是T(n)=O(n)

1.1.2 O(logn)

        假设张三比较饿,所以买了16个包子,张三每5分钟吃掉一半的包子,也就是第一个5分钟吃了8个包子,第二个5分钟吃掉4个包子,以此类推。那么张三把包子吃的只剩一个的时候,需要多久呢?
        答案:题目相当于让数字16不断的除以2,几次之后的结果为1。以2为底16的对数,也就是log2(16)。1次是5分钟,让5log2(16)=20。
        如果有n个包子,可以记做T(n)=5
log2(n),时间复杂度为T(n)=O(logn)

1.1.3 O(1)

        张三买了n屉包子和1个鸡蛋,张三每2分钟吃掉1个鸡蛋。那么张三吃掉整个鸡蛋需要多久呢?
        答案:2分钟
        也就是无论多少个包子,张三只吃一个鸡蛋,那么吃鸡蛋这个行为的数学公式可以表述为T(n)=2,转换为时间复杂度T(n)=O(1)

1.1.4 O(n2)

 &nbs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陈磊s

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

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

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

打赏作者

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

抵扣说明:

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

余额充值