算法的简单介绍

一、算法:解决问题的方法。

我们可以把所有的算法想象为一本 " 菜谱 " ,特定的算法比如菜谱中的的一道菜的制作流程,只要按照菜谱的要求制作,那么谁都可以做出一道好吃的菜。so ,这个做菜的步骤就可以理解为:" 解决问题的步骤 "
例如排序的算法,有插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序
这么多算法,那怎么衡量他们的好坏呢?
比如衡量一台电脑的好坏,可以 CPU ,价格,内存等
算法可以用时间复杂度,和空间复杂度来衡量。
时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。

二、.时间复杂度

1.什么是时间复杂度
复制代码
public class Main {
    public static void main(String[] args) {
    //下面这句代码会运行多长时间
    int i = 0;
    //那下面这句呢?
    int a = 1,b = 2,c = 3...z = 26;
    for(int i = 0; i < n ;i++){
        System.out.println("Hello world!");//那这句呢?
    }
    //电脑运行每一句代码的时候都要要花费时间,我们可以把每一条语句的执行时间都看做是一样的,记为一个时间单元。
    //所以上面的前两句代码各花费了两个时间单元,第三句花费了n个时 间单元
    //用T(n)表示程序运行了多长时间,那么上面的代码运行时间为
    T(n) = 2 + n
    //其中的n被我们称为问题的规模,其实就是处理问题的大小
    //一般只关心随着问题规模n趋于无限大时对结果影响最大的项
    //所以上面的T(n)可以简化为T(n) ~ n
    简化后的式子就是这个算法的时间复杂度
    记为O(f(n))为时间复杂度
    //所以上面的算法的时间复杂度为O(n)
    }
}

常见的复杂度如下:

  • 常数阶:O(1)

  • 线性阶:O(n)

  • 平方阶:O(nˆ2)

  • 对数阶:O(logn)

  • 线性对数阶:O(nlongn)

  • 立方阶:O(nˆ3)

  • 指数阶:O(2ˆn)

( 1 )常数阶
定义变量、给变量赋值、打印输出、这种只执行一次的语句的时间复杂度就是O(1)
( 2 )线性阶
单层for 循环中的语句执行次数为 n 次的语句,时间复杂度就是 O(n)
( 3 )对数阶
例如

( 4 )平方阶
双层for 循环中的语句执行次数为 n*n, 时间复杂度为 O(nˆ2)

2.为什么要计算算法的时间复杂度

时间复杂度可以表示算法的运行时间趋势,从而判定一个算法的效率的好坏

3.怎么计算算法的时间复杂度

一、得出运行时间的函数 f ( n )
二、对函数进行简化
①用常数 1 来取代运行时间中所有加法常数
②修改后的函数中,只保留最高阶项
③如果最高阶项存在且不是 1 ,则忽略这个项的系数

三、空间复杂度

  1. 是另一个衡量算法好坏的因素
  2. 一个算法在运行过程中临时占用存储空间大小的量度
  3. 空间复杂度算的是变量的个数
相关推荐
GreenTea5 小时前
vLLM 与 SGLang KV Cache 底层实现机制深度调研报告
前端·后端·算法
Bode_20025 小时前
多资源规划(含生产调度、库存管理及产能规划)的创新优化算法
算法·调度
Logic1016 小时前
C语言/数据结构位运算题解:异或XOR找出蛋糕订单中的“VIP独特口味“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
土司大王6 小时前
LeetCode hot100——35.搜索插入位置:Java 二分模板、左闭右开区间与插入点分析
java·算法·leetcode
微三云生态系统架构师-彭丹6 小时前
远方好物S2B2C系统架构:一级分销与保证金托管的合规技术实现
人工智能·算法
土司大王6 小时前
LeetCode hot100——34.在排序数组中查找元素的第一个和最后一个位置:Java 二分模板、边界分析
java·算法·leetcode
Logic1017 小时前
C语言/数据结构位运算题解:异或XOR找出飞行棋中的“独特颜色棋子“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
爱吃苹果的日记本7 小时前
数据结构第三课(时间复杂度)
数据结构·学习
罗西的思考8 小时前
机器人模型(WM / WAM / VLA)综合分析与对比:从「看」到「想」再到「做」
人工智能·算法·机器学习
Logic1019 小时前
C语言/数据动态规划题解:翻转一次子数组后的最大子数组和——四状态DP(O(n)时间O(1)空间)
c语言·数据结构·动态规划·时间复杂度·算法题·状态机dp·最大子数组和