一、什么是算法
在数学领域,算法是为了解决某一类问题的公式和思想。
在计算机领域,本质是一些计算机指令,解决特定运算和逻辑问题。
算法的掌握程度,一方面可以检验程序员对计算机底层的了解,一方面也可以衡量程序员的思维逻辑能力。
二、什么是数据结构
数据结构是数据的数据管理和组织的格式,使用目的是为了更高效的访问和修改数据。
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)=5log2(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

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

被折叠的 条评论
为什么被折叠?



