万象云档 本次搜索耗时 4.784 秒,为您找到 298 个相关结果.
  • 5.3 接口与实现

    5.3 接口与实现 5.3 接口与实现 我们通常认为访问控制是“隐藏实现细节”的一种方式。将数据和方法封装到类内后,可生成一种数据类型,它具有自己的特征与行为。但由于两方面重要的原因,访问为那个数据类型加上了自己的边界。第一个原因是规定客户程序员哪些能够使用,哪些不能。我们可在结构里构建自己的内部机制,不用担心客户程序员将其当作接口的一部分,从而自由地...
  • 13.4 捕获事件

    13.4 捕获事件 13.4 捕获事件 大家可注意到假如编译和运行上面的程序片,按下按钮后不会发生任何事情。必须进入程序片内部,编写用于决定要发生什么事情的代码。对于由事件驱动的程序设计,它的基本目标就是用代码捕获发生的事件,并由代码对那些事件作出响应。事实上,GUI的大部分内容都是围绕这种事件驱动的程序设计展开的。 经过本书前面的学习,大家应该有了...
  • 16.6 多重分发

    16.6 多重分发 16.6.1 实现双重分发 16.6 多重分发 上述设计模式肯定是令人满意的。系统内新类型的加入涉及添加或修改不同的类,但没有必要在系统内对代码作大范围的改动。除此以外,RTTI并不象它在RecycleA.java 里那样被不当地使用。然而,我们仍然有可能更深入一步,以最“纯”的角度来看待RTTI, 考虑如何在垃圾分类系统中将它完...
  • 2.9 完美洗牌

    2.9 完美洗牌 题目详情 分析与解法 解法一、蛮力变换 1.1、步步前移 1.2、中间交换 解法二、完美洗牌算法 2.1、位置置换pefect_shuffle1算法 2.2、完美洗牌算法perfect_shuffle2 2.2.1、走圈算法cycle_leader 2.2.2、神级结论:若2*n=(3^k - 1),则可确定圈的个数及各自头部的...
  • 4.3.中断机制

    4.3 中断机制 概述 中断是指出现需要时,CPU暂停执行当前程序,转而执行新程序的过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的事务。此时,CPU暂时中止当前程序的执行转而处理这个事务,这个过程就叫做中断。 众多周知,CPU的处理速度比外设的运行速度快很多,外设可以在没有CPU介入的情况下完成一定的工作,但某些情况下需...
  • 6.3 simhash算法

    6.3 simhash算法 方法介绍 背景 出世 流程 应用" level="3"> 应用 问题实例 6.3 simhash算法 方法介绍 背景 如果某一天,面试官问你如何设计一个比较两篇文章相似度的算法?可能你会回答几个比较传统点的思路: 一种方案是先将两篇文章分别进行分词,得到一系列特征向量,然后计算特征向量之间的距离(可以计算...
  • 3.3 最近公共祖先LCA

    3.3 最近公共祖先LCA 问题描述 分析与解法 解法一:暴力对待 1.1、是二叉查找树 1.2、不是二叉查找树 解法二:Tarjan算法 2.1、什么是Tarjan算法 2.2、Tarjan算法如何而来 2.3、Tarjan算法流程 解法三:转换为RMQ问题" level="3"> 解法三:转换为RMQ问题 3.1、什么是RMQ问题" ...
  • 第十三题 赫夫曼树

    344 2025-05-31 《经典算法题》
    第十三题 赫夫曼树 一:概念 1. 基础概念 1. 构建赫夫曼树(Build) 2:编码(Encode,Decode) 第十三题 赫夫曼树 赫夫曼树又称最优二叉树,也就是带权路径最短的树,对于赫夫曼树,我想大家对它是非常的熟悉,也知道它的应用场景, 但是有没有自己亲手写过,这个我就不清楚了,不管以前写没写,这一篇我们来玩一把。 一...
  • 2.9 完美洗牌

    2.9 完美洗牌 题目详情 分析与解法 解法一、蛮力变换 1.1、步步前移 1.2、中间交换 解法二、完美洗牌算法 2.1、位置置换pefect_shuffle1算法 2.2、完美洗牌算法perfect_shuffle2 2.2.1、走圈算法cycle_leader 2.2.2、神级结论:若2*n=(3^k - 1),则可确定圈的个数及各自头部的...
  • 4.5 数组初始化

    4.5 数组初始化 4.5.1 多维数组 4.5 数组初始化 在C中初始化数组极易出错,而且相当麻烦。C++通过“集合初始化”使其更安全(注释⑥)。Java则没有象C++那样的“集合”概念,因为Java中的所有东西都是对象。但它确实有自己的数组,通过数组初始化来提供支持。 数组代表一系列对象或者基本数据类型,所有相同的类型都封装到一起——采用一个统...