JOURNAL · THINKING & PRACTICE

算法

当前筛选
3 篇文章
  1. 10/08
    JavaJava Web并发编程操作系统生产者消费者算法读者写者银行家算法

    从仓库、银行到图书馆:操作系统三大经典并发问题,如何走进 Java Web?

    为什么电商订单需要消息队列?为什么资源够用也不一定能分配?为什么多个线程能一起读缓存,却不能随意同时修改?从生产者—消费者、银行家算法、读者—写者三个操作系统经典问题出发,以生活类比、PV 操作、伪代码和 C / Java / Python / C++ / JavaScript 五语言实现,理解它们如何迁移到 Spring Boot、任务调度、管理系统与高并发业务,并厘清 JVM 锁、数据库事务和分布式消息之间的边界。

    阅读全文
  2. 09/08
    C语言Java排序时间复杂度空间复杂度算法

    从两个数比较到十大排序算法

    第二个式子保证排序只改变位置、不增加、不删除也不篡改元素。 NIST 对排序的定义同样强调两个基本条件:结果必须满足预定顺序,并且结果必须是原始数据的一个排列。排序算法实际上存在几十种,选择哪一种与数据规模、可用内存、数据原有有序程度、键值范围以及比较和移动数据的成本有关。 获得元素之间的顺序关系。 这类算法不仅使用元素之间的大小关系,还会利用数据本身的结构信息。 下面所有代码均按升序排序。

    阅读全文
  3. 08/31
    LeetCode双指针复杂度分析多语言实现数据结构与算法数组暴力枚举算法算法优化

    LeetCode 11|盛最多水的容器:从暴力枚举到双指针优化

    本题求数组两线间“短板×宽度”的最大值。暴力法枚举全以 LeetCode 11「盛最多水的容器」为例,从最直观的暴力枚举出发,逐步推导标准双指针与双指针剪枝三种解法。结合短板效应、算法正确性证明、黑盒与白盒测试、详细执行步骤及复杂度分析,深入理解双指针算法的优化原理,并提供 C、C++、Java、Python、JavaScript 五种语言的完整注释实现。部组合(O(n²)),双指针法则通过每次移动较短的指针向中心靠拢,以 O(n) 时间高效求解,是本题最优解。

    阅读全文