编程思想 —— 哨兵的使用
- LDA:Leading Dimension of A
View topic - leading dimension?
Clarification of the leading dimension in CUBLAS when transposing
完整的说法是:leading dimension of two-dimensional array(用来存放数学意义上的矩阵的二维数组) used to store the matrix A。
也即一个二维矩阵的主维数是什么呢?难道是矩阵的行数吗?
未必是矩阵的行数,LDA(leading dimension)是编程中的术语,不是严格意义上数学的概念,其实 LDA 需要考虑该二维数组在内存在存储方式。
- 一个 100*100 的矩阵 A 存储在 100*100 的数组中,则其 LDA 就是行数 100
- 如果处理的对象是 A 的子集,B = A[91:100, 1:100],这种情况下,其行数是 10 但是 LDA = 100,对以列序优先的编程语言(比如 Fortran)而言,LDA 定义的是同行的相邻元素再内存中的距离。
1. 哨兵(sentinel )
哨兵:顾名思义,指站岗、放哨、巡逻、稽查的士兵。
- 常用来作为比较,
- 比大小,快排
- 比相等与否,判等;
int i = 0;
while ( i < 10 ){...++i;
}
while 循环中的变量 i 控制着最终的循环次数。这是非常流行的一个表示法,具有这个作用的变量有时也称为哨兵变量(Sentinel variable)。
再比如快排,
就是 sentinel ,就是用来指定一个位置的特殊元素,比如快速排序里面,需要选一个变量作为中间值,这个值就是一个 sentinel,又比如用来指示一个队列尾部位置的变量。
2. 哨兵的应用:简化边界条件的处理
对于双向链表 L(L.head 为表头,表头有值,L.head.prev 为 NIL),L.nil 作为该链表的哨兵变量,
- L.nil.next 指向表头;
- L.nil.prev 指向表尾;
不含哨兵的链表(头)插入:
LIST_INSERT(L, x)
x.next = L.head
if L.head != NILL.head.prev = x
L.head = x
x.prev = NIL
使用哨兵之后便可以省去条件判断语句:
LIST_INSERT'(L, x)
x.next = L.nil.next
L.nil.next.prev = x
L.nil.next = x
x.prev = L.nil
编程思想 —— 哨兵的使用相关推荐
- 《Go语言精进之路,从新手到高手的编程思想、方法和技巧1》读书笔记和分享
Go语言精进之路,从新手到高手的编程思想.方法和技巧 读书分享 1 本书定位 2 本书内容总览 3 选择本书的原因 4 小收获分享 第7-12条 真的不知道咋命名 第13-19条 能用--怎么用更好 ...
- 【java】《java编程思想》 读书笔记
之前主要用的C++的比较多,之前花了快2个月的实际认真系统全面的学习了以下java的基础语法,<java编程思想>这本书翻译水平确实不是很好,很多话读着会比较拗口.推荐读之前,先去网上搜索 ...
- java编程思想--概述
之前主要用的C++的比较多,之前花了快2个月的实际认真系统全面的学习了以下java的基础语法,<java编程思想>这本书翻译水平确实不是很好,很多话读着会比较拗口.推荐读之前,先去网上搜索 ...
- 《Java编程思想》读书笔记(二)
三年之前就买了<Java编程思想>这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第一章到第十章的内容,这一次记录的是第 ...
- 类的包访问权限:《Java编程思想》中一段话的困惑
类的包访问权限:<Java编程思想>中一段话的困惑 在<java编程思想第三版>(陈昊鹏 饶若楠等译)的第五章隐藏具体实现中,5.4节的最后一段话是: "正如前面所提 ...
- 译者招募 | 《Java编程思想》作者Bruce Eckel新作On Java 8
硅谷创业之父Paul Graham曾在<黑客与画家>中写道,"判断一种语言是否流行的条件是,一种免费的实现,一本相关书籍,以及语言所依附的计算机系统." 当然,Java ...
- 《Java编程思想》学习笔记(三)——初始化与清理
一.初始化 初始化其实就是为变量分配内存空间,并确定其初始值的过程.想了解Java中初始化的各种情况,首先要了解Java中变量的类型.根据自己的理解,将Java中的变量类型分成以下几种,虽然可能不太准 ...
- 《Java编程思想》第四版读书笔记 第十四章 类型信息
2019独角兽企业重金招聘Python工程师标准>>> 14.2 RTTI运行时类型识别. Class对象包含了与类有关的信息,Java使用Class对象来执行其RTTI.每个类都有 ...
- 几种常用编程语言的编程思想和方法 转
搞软件的人,编程语言的掌握是基本功,如果单单是学习语法,最慢的一周之内也应该可以搞定(个人认为 语法层面c++是最复杂的).不幸的是,软件的本质是逻辑,解决方案的设计是要借助某种解决问题或编程的思想的 ...
最新文章
- 比Navicat还要好用的通用数据库管理工具,功能强大还免费
- 交通运输部部长李小鹏谈及自动驾驶:包容失败、反对垄断,力争在国家层面出台指导意见...
- 【转】SAP开关账期后台任务
- 大数据处理时的一种BitMap小算法
- 在线五子棋JAVA网络编程_实验五 Java网络编程及安全
- 字符串最长公共子序列python_求解两个字符串的最长公共子序列
- LeetCode 2176. 统计数组中相等且可以被整除的数对
- 误删除了mysql库的user表解决办法
- Dart 10-Day
- 饿了么element UIel-dialog弹出层/el-dialog修改默认样式不能在style scoped修改
- 记住这两点,彻底终结原型链吧
- WireShark 查看UDP码流的丢包率
- Python print 不换行,Print Without Newline In Python
- 主谓一致 | 谓语动词单复数使用讲解
- 欧姆龙气压传感器 2SMPB-02E程序编写
- 201933 plsql设置及使用技巧—Jess
- 如何快速准备面试中的算法,获得 Offer?
- day05 【异常、线程】
- 毕业论文系列之基于WiFi的智能农业大棚管控系统设计代码
- LinuxC编程——文件IO
热门文章
- 计算机考试如何添加打印机,如何添加网络打印机?
- 【java奇思妙想】使用多线程的思想来实现java网络编程接收和发送的问题
- matlab与计量经济模型,计量经济学和matlab.pdf
- HUE与Zookeeper的集成
- Python的算数运算符
- JSP中application的用法
- flume和sqoop导数据的区别
- 从服务端接收数组_Kafka系列第6篇:消息是如何在服务端存储与读取的,你真的知道吗?...
- chrome下方的copeascURL(cmd) 复制的内容,在windows的cmd中不可用的原因
- 【VS】项目属性配置(中)