zoukankan      html  css  js  c++  java
  • 数据结构与算法——简单排序算法(1)

    认识时间复杂度

    常数时间的操作

    一个操作如果和样本的数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。

    时间复杂度为一个算法流程中,常数操作数量的一个指标。常用0(读作big 0)来表示。具体 来说,先要对一个算法流程非常熟悉,然后去写出这个算法流程中,发生了多少常数操作, 进而总结出常数操作数量的表达式。

    在表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果为千(N),那 么时间复杂度为。(f(N))。

    评价一个算法流程的好坏,先看时间复杂度的指标,然后再分析不同数据样本下的实际运行 时间,也就是“常数项时间”。

    选择排序、冒泡排序细节的讲解与复杂度分析

    时间复杂度0(N^2),额外空间复杂度0(1)

    插入排序细节的讲解与复杂度分析

    时间复杂度0(N^2),额外空间复杂度0(1)

    算法流程按照最差情况来估计时间复杂度

    二分法的详解与扩展

    1) 在一个有序数组中,找某个数是否存在

    2) 在一个有序数组中,找>=某个数最左侧的位置

    3) 局部最小值问题

    异或运算的性质与扩展

    1) 0^N == N N^N == 0

    2) 异或运算满足交换律和结合率

    3) 不用额外变量交换两个数

    4) 一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到这一个数

    5) 一个数组中有两种数出现了奇数次,其他数都出现了偶数次,怎么找到这两个数

    对数器的概念和使用

    1,有一个你想要测的方法a

    2,实现复杂度不好但是容易实现的方法b

    3,实现一个随机样本产生器

    4,把方法a和方法b跑相同的随机样本,看看得到的结果是否一样。

    5,如果有一个随机样本使得比对结果不一致,打印样本进行人工干预,改对方法a或者 方法b

    6,当样本数量很多时比对测试依然正确,可以确定方法a已经正确。

    剖析递归行为和递归行为时间复杂度的估算

    用递归方法找一个数组中的最大值,系统上到底是怎么做的?

    master公式的使用

    T(N) = a*T (N/b) + O(N^d)

    1. log(b, a) > d -> 复杂度为0(N^log(b,a))

    2. log(b, a)= d -> 复杂度为O(N^d * logN)

    3. log(b, a) < d -> 复杂度为O(N^d)

  • 相关阅读:
    excel中年月日格式的数据分离出年
    Vision MLP 之 Sparse-MLP A Fully-MLP Architecture with Conditional Computation
    Vision MLP 之 S2-MLP V1&V2 : Spatial-Shift MLP Architecture for Vision
    Visoin MLP之CycleMLP A MLP-like Architecture for Dense Prediction
    Vision MLP之RaftMLP Do MLP-based Models Dream of Winning Over Computer Vision
    Vision MLP之Hire-MLP: Vision MLP via Hierarchical Rearrangement
    显著性目标检测之Learning to Promote Saliency Detectors
    paddle中的LoDTensor
    C语言0长度数组(可变数组/柔性数组)
    1、迭代器失效
  • 原文地址:https://www.cnblogs.com/wwj99/p/12180337.html
Copyright © 2011-2022 走看看