Fantasy-JXF
  • Introduction
  • 机器学习
    • 机器学习基础
    • 机器学习实践
    • 机器学习算法
    • 集成学习
  • 深度学习
    • 深度学习基础
    • 深度学习实践
    • CNN
    • RNN
    • 优化算法
    • 序列建模
    • 《深度学习》整理
    • 术语表
  • 自然语言处理
    • NLP发展趋势
    • 自然语言处理基础
    • 句嵌入
    • 词向量
    • 多模态
    • 视觉问答(VQA)综述
    • 深度查询理解
      • 综述
  • 计算机视觉
    • 基本模型
  • 数学
    • 概率论
    • 微积分的本质
    • 深度学习的核心
  • 算法
    • 字符串
    • 数据结构
    • 数据结构Advanced
    • 双指针
    • 动态规划
    • 区间问题
    • 排列组合
    • 数学问题
    • 洗牌/采样/随机数
    • 大数运算
    • 海量数据处理
    • IO模板
    • 必备算法
    • LeetCode
    • 剑指Offer
    • 面试真题
  • 编程
    • C++基础
    • C++面向对象
    • C++左值与右值
    • Python基础
  • 笔试面经
    • 360
    • iHandy
    • 作业帮
    • 字节跳动
    • 小米
    • 度小满
    • 快手
    • 招行
    • 搜狐畅游
    • 滴滴
    • 爱奇艺
    • 百度
    • 百度2
    • 百度3
    • 百词斩
    • 腾讯
    • 迅雷
    • 顺丰
    • 旷视
    • 爱笔
    • 魔门塔
    • 搜狐
由 GitBook 提供支持
在本页
  • 算法 Algorithm
  • 题解
  • 专题
  • 备忘
  • Reference
  • Index
  • 排序
  • 稳定排序与不稳定排序
  • 堆排序-建堆的时间复杂度 O(N)
  • Trick
  • 时间复杂度
  • 敏感空间

这有帮助吗?

算法

上一页深度学习的核心下一页字符串

最后更新于6年前

这有帮助吗?

算法 Algorithm

题解

专题

  • A

  • B

  • C

备忘

Reference

Index

排序

稳定排序与不稳定排序

稳定排序

  • 冒泡排序、插入排序、归并排序、基数排序

不稳定排序

  • 选择排序、快速排序、希尔排序、堆排序

堆排序-建堆的时间复杂度 O(N)

  • 堆排序的时间复杂度是 O(NlogN) 没有问题

  • 但是建堆的时间复杂度是 O(N)

Trick

时间复杂度

  • 暴力枚举永远是第一个考虑的方法,但也有一些前提

    • 如果输入规模 < 1e4,那么可以尝试考虑 O(n^2) 的算法(两次循环暴力枚举);如果 ≥ 1e5,那么可能就需要考虑 O(nlogn) 的算法了——这不是绝对的,也可以通过剪枝等操作加速。

    • [C++] string 拼接的速度依次为:1)使用 stringstream;2)使用 append();3)使用 s += c;4)使用 s = s + c——如果有大量拼接操作,要避免使用最后一种方法。

敏感空间

  • long long 上界:2^63-1 = 9,223,372,036,854,775,807 ≈ 9.223372e+18

    • 阶乘:20! = 2432902008176640000 ≈ 2.432902e+18 OK,21!超

    • Fibnacci 数列:fib[92] = 7540113804746346429 ≈ 7.540114e+18 OK,fib[93] 超

    • Catalan 数:

    • 整数划分:

  • 数组大小:如果内存限制为 2MB,那么最大可开辟的 int 数组为 2*1024*1024/4 = 524288 ≈ 50,0000,char 数组为 2*1024*1024 = 2,097,152 ≈ 200,0000

    • 实际单个数组是远开不了那么大,比如 windows 默认的栈好像只有 1MB

    • 在无法修改栈大小的情况下,可以使用 new 或 malloc 在堆上开辟内存

        int *pa = malloc(sizeof(int)*1024*1024);
        int *pb = new int[1024*1024];

f-zyj/

- CSDN博客

- 知乎

- CSDN博客

剑指Offer 题解
Leetcode 题解
数据结构
数据结构_Advanced
双指针
动态规划
排列组合
洗牌、采样、随机数
IO 模板
必备算法
ACM 模板以及个人平时训练的代码
ACM 在线模版 - 逐梦者
OI Wiki
排序
稳定排序与不稳定排序
堆排序-建堆的时间复杂度 O(N)
Trick
时间复杂度
敏感空间
为什么建立一个二叉堆的时间为O(N)而不是O(Nlog(N))?
百度:ACM trick
ACM Trick点&&常用操作记录(持续更新)(敏感空间)