• 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

编程思想 —— 哨兵的使用相关推荐

  1. 《Go语言精进之路,从新手到高手的编程思想、方法和技巧1》读书笔记和分享

    Go语言精进之路,从新手到高手的编程思想.方法和技巧 读书分享 1 本书定位 2 本书内容总览 3 选择本书的原因 4 小收获分享 第7-12条 真的不知道咋命名 第13-19条 能用--怎么用更好 ...

  2. 【java】《java编程思想》 读书笔记

    之前主要用的C++的比较多,之前花了快2个月的实际认真系统全面的学习了以下java的基础语法,<java编程思想>这本书翻译水平确实不是很好,很多话读着会比较拗口.推荐读之前,先去网上搜索 ...

  3. java编程思想--概述

    之前主要用的C++的比较多,之前花了快2个月的实际认真系统全面的学习了以下java的基础语法,<java编程思想>这本书翻译水平确实不是很好,很多话读着会比较拗口.推荐读之前,先去网上搜索 ...

  4. 《Java编程思想》读书笔记(二)

    三年之前就买了<Java编程思想>这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第一章到第十章的内容,这一次记录的是第 ...

  5. 类的包访问权限:《Java编程思想》中一段话的困惑

    类的包访问权限:<Java编程思想>中一段话的困惑 在<java编程思想第三版>(陈昊鹏 饶若楠等译)的第五章隐藏具体实现中,5.4节的最后一段话是: "正如前面所提 ...

  6. 译者招募 | 《Java编程思想》作者Bruce Eckel新作On Java 8

    硅谷创业之父Paul Graham曾在<黑客与画家>中写道,"判断一种语言是否流行的条件是,一种免费的实现,一本相关书籍,以及语言所依附的计算机系统." 当然,Java ...

  7. 《Java编程思想》学习笔记(三)——初始化与清理

    一.初始化 初始化其实就是为变量分配内存空间,并确定其初始值的过程.想了解Java中初始化的各种情况,首先要了解Java中变量的类型.根据自己的理解,将Java中的变量类型分成以下几种,虽然可能不太准 ...

  8. 《Java编程思想》第四版读书笔记 第十四章 类型信息

    2019独角兽企业重金招聘Python工程师标准>>> 14.2 RTTI运行时类型识别. Class对象包含了与类有关的信息,Java使用Class对象来执行其RTTI.每个类都有 ...

  9. 几种常用编程语言的编程思想和方法 转

    搞软件的人,编程语言的掌握是基本功,如果单单是学习语法,最慢的一周之内也应该可以搞定(个人认为 语法层面c++是最复杂的).不幸的是,软件的本质是逻辑,解决方案的设计是要借助某种解决问题或编程的思想的 ...

最新文章

  1. 比Navicat还要好用的通用数据库管理工具,功能强大还免费
  2. 交通运输部部长李小鹏谈及自动驾驶:包容失败、反对垄断,力争在国家层面出台指导意见...
  3. 【转】SAP开关账期后台任务
  4. 大数据处理时的一种BitMap小算法
  5. 在线五子棋JAVA网络编程_实验五 Java网络编程及安全
  6. 字符串最长公共子序列python_求解两个字符串的最长公共子序列
  7. LeetCode 2176. 统计数组中相等且可以被整除的数对
  8. 误删除了mysql库的user表解决办法
  9. Dart 10-Day
  10. 饿了么element UIel-dialog弹出层/el-dialog修改默认样式不能在style scoped修改
  11. 记住这两点,彻底终结原型链吧
  12. WireShark 查看UDP码流的丢包率
  13. Python print 不换行,Print Without Newline In Python
  14. 主谓一致 | 谓语动词单复数使用讲解
  15. 欧姆龙气压传感器 2SMPB-02E程序编写
  16. 201933 plsql设置及使用技巧—Jess
  17. 如何快速准备面试中的算法,获得 Offer?
  18. day05 【异常、线程】
  19. 毕业论文系列之基于WiFi的智能农业大棚管控系统设计代码
  20. LinuxC编程——文件IO

热门文章

  1. 计算机考试如何添加打印机,如何添加网络打印机?
  2. 【java奇思妙想】使用多线程的思想来实现java网络编程接收和发送的问题
  3. matlab与计量经济模型,计量经济学和matlab.pdf
  4. HUE与Zookeeper的集成
  5. Python的算数运算符
  6. JSP中application的用法
  7. flume和sqoop导数据的区别
  8. 从服务端接收数组_Kafka系列第6篇:消息是如何在服务端存储与读取的,你真的知道吗?...
  9. chrome下方的copeascURL(cmd) 复制的内容,在windows的cmd中不可用的原因
  10. 【VS】项目属性配置(中)