• 数据结构初相识


    //好久没有更新,是因为去练车考驾照了! 终于拿到驾照了,接下来就要更加努力地码代码写博客了。

    一.什么是数据结构?

    数据结构是在内存中管理数据的,可以对数据进行增删查改。

    与数据库的区别?

    数据库是在磁盘中管理数据的,可以对数据进行增删 查改 。

    在磁盘中存储数据是不带电保存,相对内存存储数据存储时间较长。

    二.什么是算法?

    算法是处理数据的,如通过快排的方式排序数据。

    三.时间复杂度

    算法效率衡量往往要看其算法的时间复杂度和空间复杂度。

    其中,时间复杂度不是计算程序执行的时间,而是估算程序执行的次数的量级。

    时间复杂度是一个函数,不计算算法执行的时间,而是计算算法执行的次数。

    //算法执行的时间与计算机的硬件有关。

    实际计算时间复杂度的时候,只需要大概的执行次数,这里我们使用大O渐进表示法来表示。

    计算时间复杂度的大O渐进表示法的规则:

    1.用1来取代函数式中的常数项

    2.只保留最高项

    3.如果最高项的系数存在且不为1,则去除系数得最终结果

    有些程序的时间复杂度计算会出现多种不同的结果。

    最坏情况:完成程序要进行的最多次执行次数

    最好情况:完成程序要进行的最少次执行次数

    平均情况:一般计算为最坏情况与最好情况和的二分之一倍

    在计算复杂的时间复杂度时常常以其最坏情况的结果为最终结果。

    例1:冒泡排序的时间复杂度为O(N^2)

    由于冒泡排序的思想,在第一轮循环即遍历整个数组并不完成元素的交换,视为数组是有序的。程序执行的次数就为N-1次。

    若要进行冒泡排序的数组是有序的,那么最好情况的时间复杂度为O(N)

     

    例2:二分查找的时间复杂度为O(log2 N)

    若二分查找的数正好时数组最中间的数为最好情况,其时间复杂度为O(1) 

    例3:斐波那契递归的时间复杂度为O()

     

    改善斐波那契递归

    //快排的时间复杂度是O(N* log2 N)

     有关时间复杂度相关习题的讲解:

    给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

    输入: nums = [1,2,3,4,5,6,7], k = 3
    输出: [5,6,7,1,2,3,4]
    解释:
    向右轮转 1 步: [7,1,2,3,4,5,6]
    向右轮转 2 步: [6,7,1,2,3,4,5]
    向右轮转 3 步: [5,6,7,1,2,3,4]

    至少用三种方法来解决该题

    方法一:超出时间限制

    方法二:该方法通过

    方法三:

     还有好多知识点要补充阿,加油!!

  • 相关阅读:
    Opencv for unity 下载
    FastAPI单元测试:使用TestClient轻松测试你的API
    KMP字符串匹配算法
    SpringCloud:EnableFeignClients注解用法
    设计模式之访问器模式(Visitor)的C++实现
    EtherCAT转Modbus网关做为 MODBUS 从站配置案例
    学习分享:如何进行全局变量的学习
    直播回顾 | 京东科技研发效能度量的大体系与小实践
    Zabbix监控系统详解2:基于Proxy分布式实现Web应用监控及Zabbix 高可用集群的搭建
    背包问题
  • 原文地址:https://blog.csdn.net/shizhongruyi0606/article/details/125961273