自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ppppppc

Parallel Computing & Optimization

  • 博客(33)
  • 资源 (2)
  • 收藏
  • 关注

原创 CSAPP:datalab

题目要求参考答案第一题 bitAnd第二题getBytes第三题logicalShift第四题bitCount第五题bang第六题tmin第七题fitsBits第八题divpwr2第九题negate第十题isPositive第十一题isLessOrEqual第十二题ilog2第十三题float_neg第十四题float_i2f第十五题float_twice...

2018-04-22 14:29:04 6060

转载 Hash表

麻省理工公开课: http://open.163.com/movie/2010/12/R/E/M6UTT5U0I_M6V2TG4RE.html

2016-02-26 12:52:46 408

转载 最短路径

Dijkstra算法1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。问题描述:在无向图 G=(V,E)

2016-02-25 20:58:42 437

转载 图的存储和遍历

图的基本概念(1)图是由顶点集合以及顶点间的关系集合组成的一种数据结构。  Graph = (V,E) V是顶点的又穷非空集合;E是顶点之间关系的有穷集合,也叫边集合。(2)有向图:顶点对是有序的;无向图:顶点对是无序的。(3)无向边:若顶点Vi到Vj之间的边没有方向,则称这条边为无向边,用无序偶对(Vi,Vj)来表示。  如果图中任意两个顶点时间的边都是无

2016-02-23 16:59:50 1593

原创

介绍堆,英文名heap。这个数据结构是来自于堆排序的,其结构近似于一颗完全二叉树,通常用数组来存储表示。堆是实现堆排序以及优先队列的基础数据结构。根据任何子树根节点都比左右孩子大或小,堆可以分为最大堆(又叫大根堆)和最小堆(又叫小根堆)。最大堆具有性质:任何结点大于等于它左右孩子结点。最小堆则恰好相反:任何结点小于等于它左右孩子结点。最小堆和最大堆如图所示:如何

2016-02-22 11:59:31 444

原创 哈夫曼树

介绍哈夫曼树,英文名 Huffman Tree, 又称赫夫曼树或最优二叉树。其主要用途是在于解决哈夫曼编码。哈夫曼编码则目的是在字节长度一定下,尽可能传输较多的信息。这也就是要让出现在明文中次数较多的字符对应较短的编码。这样即可达到在字节长度一定下,传输较多内容。为了介绍哈夫曼树的特点,先介绍一些名词,路径长度和带权路径长度。路径长度是指一个结点到另外一个结点之间分

2016-02-21 17:03:46 4965

转载 深入理解RunLoop

2015-06-01 11:19 编辑: lansekuangtu 分类:iOS开发 来源:ibireme24 40015iOSOS XRunLoop招聘信息:Mac软件高级开发工程师java高级软件工程师iOS软件工程师Web后端高级开发工程师移动端开发工程师iOS工程师iOS工程师手游JAVA 服务器端主程cocos2dx手游客户端主

2016-02-17 17:17:18 398

原创 Key-Value Observing

介绍Key-Value Observing 简称KVO,中文名键值观察。如果学过设计模式,那么它其实就是借助于KVC实现的观察者模式。一个观察者A观察B的属性,当B的属性引起变化时,通知A做出相应的决策。下面简略介绍了一个PersonObject观察自己的银行中的账户余额属性,当账户余额发生变化时通知观察者做出相应角色 PS: 在学习KVO之前,一定要先学习KVC。具体实现为了实现KV

2016-02-13 11:56:46 1175

原创 Key-Value Coding

Key-Value Coding介绍Key-Value Coding简称KVC,中文名为键值编码。它是一种利用字符串间接访问对象属性的方法。而这个字符串便就是键。访问器,即setter和getter,也是一种间接访问对象属性的方法,只不过在有些场合更加适合使用KVC。虽然KVC在业务逻辑中很少会使用,但是它是Key-Value Observing,Core Data, Cocoa bindings,

2016-02-12 16:49:50 2896

原创 Objective-C Runtime系统

介绍Objective-C与C语言不同的就是增加了面向对象的特性。然而具有面向对象的它由于Runtime系统的支持,使得和传统的面向对象语言例如C++,java又有很大的不同。在传统面向对象语言中,大部分的面向对象特性是由编译器完成的,而Objective-C把绝大部分工作延迟到了运行时去决定。例如,在传统的面向对象语言中,让某个对象执行某个方法,通常叫做方法调用(method invocation

2016-02-07 19:58:53 435

转载 B-树

当查找的文件较大,且存放在磁盘等直接存取设备中时,为了减少查找过程中对磁盘的读写次数,提高查找效率,基于直接存取设备的读写操作以"页"为单位的特征。1972年R.Bayer和E.M.McCreight提出了一种称之为B-树的多路平衡查找树。它适合在磁盘等直接存取设备上组织动态的查找表。 1、定义与特性B-树是一种平衡的多路查找树,在文件系统中有所应用。主要用作文件的索引。B

2016-01-24 17:43:22 443

转载 AVL树的旋转

平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树,它通过旋转不平衡的节点来使二叉树重新保持平衡,并且查找、插入和删除操作在平均和最坏情况下时间复杂度都是O(log n)       AVL树的旋转一共有四种情形,注意所有旋转情况都是围绕着使得二叉树不平衡的第一个节点展开的。 1. LL型    平衡二叉树某一节点的左孩子的左

2016-01-23 14:43:45 386

原创 二叉查找树

@:二叉查找树 定义二叉搜索树(Binary Search Tree),又称为二叉排序树(Binary Sort Tree), 简称为BST。它具有以下性质: ①. 任何一个结点大于它左子树所有结点的值,小于它右子树所有结点的值 ②. 任何一个结点的左右子树也是二叉搜索树 ③. 中序遍历结果是一个非递减序列相关操作以及时间复杂度分析查找(Find)在二叉搜索树中,查找操作从根结点出发分以下四个

2016-01-22 19:27:52 740

原创 线索二叉树

@:线索二叉树定义由于一般二叉树的链式表示会有很多空闲的指针域,假设一课有n结点的二叉树,用二叉链表表示存储结构,则它的空闲链域有n+1个。因为每个结点有左右孩子链域,所以总链域为2n。又由于除了根节点,必定有它的父亲结点的某个链域指向它,因此使用的链域为n-1;所以空闲链域为2n-(n-1) = n+1个。为了充分利用这些链域,我们将这些链域设置为线索。线索的定义是,一棵树按照某种遍历方式将存储的

2016-01-21 11:15:18 1245

原创 二叉树

定义二叉树不是线性的数据结构,而是树型结构,它的特点是每个结点之多有两颗字数(即二叉树不存在出度大于2的结点),并且二叉树子树有左右之分,其次序不能任意颠倒。二叉树有5条非常重要的性质以及4种遍历方法。前者经常在笔试题中出现,后者经常会在机试,面试中出现。 性质性质1: 在二叉树的第i层上至多有2i-1(i≥1);利用数学归纳法证明此性质: ①. 当i=1时,只有一个根结点,显然2i-1 =

2016-01-19 12:34:34 899

原创

定义栈是一种特殊的线性表,它只允许对线性表的表头或者表尾数据进行操作。栈的实现方式有两种,一种是顺序映像实现,还有一种是链式映像实现。栈的顺序映像实现方式通常和线性顺序表中的原理一样,只不过他只能对表尾进行操作,也就是我们熟悉的top指针放在表尾,入栈出栈操作就是在顺序表表尾增加删除结点。利用这种方式实现,需要预分配栈空间,当存储元素个数超过预分配的栈空间的时候,需要扩充。栈的链式映像实现通俗点说就

2016-01-18 12:06:51 735

原创 线性链式表

定义线性链式表就是我们常说的链表,也被称为线性表的非顺序映像或链式映像。它与线性顺序表的最大区别就是各个存储单元是非连续的。它无法通过数学公式来确定每个存储单元在内存中的关系。链表中最重要的两个概念就是结点(Node)和next指针。在单向链表中结点通常只包含两个存储域,一个是data数据域,用来存储结点所代表的值。第二个是,next指针域,用来存储结点的后继。因此next指针成了寻找结点后继的唯一

2016-01-18 12:05:00 1028

原创 线性顺序表

定义线性顺序表是线性表中一种利用顺序结构实现的数据结构。线性顺序表又被称为线性表的顺序映射或者线性表的顺序存储结构。 它指的是利用一组地址连续的存储单元依次存储线性表的数据元素。就如上图所示,线性顺序表的元素之间是连续的。假设线性顺序表的每个元素需要占用d个存储单元,并且规定线性顺序表 第一个存储单元的地址为基地址(首地址)。那么线性顺序表中第i+1个元素的地址和第i个元素的地址有一下关系对以上

2016-01-18 12:01:46 1738

原创 队列

队列是一种特殊的线性表,它只允许对线性表的头尾进行操作,满足FIFO(先进先出)的规则。通常有两种实现方式,顺序结构和链式结构。一般顺序结构实现,都采用了循环队列的方式来减少空间的浪费。而链式结构则不需要做循环队列来减少空间浪费,因为本身就是动态生成结点的。对于入队和出队操作,两种方式都在对应在表头和表尾位置,时间复杂度都是相同的,这个会在相关操作和时间复杂度分析中具体分析。循环队列图链表队列图相关

2016-01-18 11:56:53 496

原创 Swift 构造器探究

Swift 构造器探究什么时候要用构造器?对于类(Class)其实在其他语言中,比如说Java对于属性的初始化没有严格的要求。甚至在Model层只有对应属性的get,set访问器。而在Swift中无论是对于结构体(Structure)还是类(Class),如果其中存在存储属性(stored property),那么必须在合适的地方给它赋初始值,也就是初始化。不能让它们成为不确定的状态,即没有初始化。

2015-04-24 19:52:50 2913

原创 A Swift Tour

目录目录About SwiftHello World变量与常量数据类型转换以及字符串String插值数组Array和字典DictionaryAbout SwiftSwift是一门汲取了C与Objective-C的精华,用来开发iOS和OS X应用的新的编程语言(由苹果公司于2014年6月7日发布)。Swift摆脱了C语言兼容性的约束,采用安全的编程模式并且添加了现代化的特性,让编程更加容易

2015-03-10 16:24:11 927 1

原创 堆排序

一、堆排序算法基本思想利用最小堆(最大堆)的数据结构,利用待排序数据,建立最小/大堆每次取走堆顶的元素,然后将堆底的一个最后一个元素,放到堆顶,重整堆成为最小堆,然后再取走堆顶元素,以此类推......直到取完所有元素二、堆排序的数据结构堆的数据结构,不懂的可以看我另外一篇介绍最小堆的博客:三、排序过程图解四、算法源代码#incl

2014-12-09 21:23:29 322

转载 最小生成树

一、最小生成树算法基本思想最小生成树是基于贪心法的。这里我只介绍prime算法,关于prime算法,核心思想就是:把找好的顶点放到v集合,剩下的顶点留在u集合,每次在寻找u集合中顶点与v集合中的顶点有相邻边的最短边,加入v集合,在u集合中移除,一直找到u集合为空为止。每次从u集合的点加入v集合的时候记得修改lowcost中的值。二、最小生成树的数据结构map[i][j]

2014-12-08 21:37:33 630

原创 部分背包问题

一、部分背包问题算法基本思想部分背包问题是基于贪心法的基本思想。何谓贪心法,只要你够贪心,就能领略贪心算法之精髓。部分背包问题和0/1背包问题的区别就是:部分背包问题中的单个物品,可以取一部分装入背包。而0/1背包问题则是要么全部拿走,要么一无所有(这里引用了LOL卡牌大师的台词)。 那么作为一个so greed的你,肯定应该知道按照什么顺序拿物品的把。没错,看着值钱的先抢! 这里

2014-12-08 13:22:52 6864

原创 最长公共子序列

一、最长公共子序列算法基本思想最长公共子序列是基于动态规划的思想。最长公共子序列,英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。而最长公共子串(要求连续)和最长公共子序列是不同的(摘自百度百科)我们可以分三个方面思考这样个

2014-12-08 10:49:33 788

原创 0/1背包问题

一、0/1背包问题算法基本思想0/1背包问题是经典的动态规划问题。问题基本描述为:给你体积为V的背包,在物品G1,G2,G3...(这些物品所对应的体积分别为W1,W2,W3...价值分别为P1,P2,P3...)中选择一些放到背包里,使得在不超过背包体积的情况下,背包内物品的价值总和为最大。一句话:决定一件物品要不要放进背包的条件是这件物品放进去所带来的总体收益是大于还是小于不放

2014-12-07 16:22:18 579

原创 矩阵连乘

一、矩阵连乘算法基本思想矩阵连乘是基于动态规划的问题。面对ABCDEF...这么多矩阵连乘,让你在其中添加括号使得这些矩阵所做的乘法次数最少。面对这么大的一个问题,我们肯定无从下手。那么如果给你两个矩阵,你是不是又会骂,傻X都会呢?是的,既然解决不了这么大的问题,我们可以从两个矩阵开始,也就是原问题的最小子问题。两个矩阵相差,不能讨论所谓的最小乘法次数,因为情况只有一种,但是它记录了两个矩阵直

2014-12-07 15:33:46 919

原创 循环赛日程表

一、循环赛日程表算法基本思想循环赛日程表是基于分治的思想的。对于一个庞大的问题规模,我们无从下手,那么如果让你安排两个人的循环赛,你是不是可以很轻松的解决呢?那不废话吗,1选手和2选手干一场就是了!那么,如果是4个人呢,我们是否可以分成两组,1、2和3、4,分别给1、2安排比赛,3、4安排比赛。等他们内部战争解决了之后,再来挑衅外面的~。那么问题来了,挑衅外人,哪家强?问题貌似很复杂啊,但是你

2014-12-07 09:58:17 677

原创 棋盘覆盖

一、棋盘覆盖算法基本思想棋盘覆盖也是基于分治思想,把一个棋盘分成左上,右上,左下,右下四个部分,然后依次解决四个子棋盘的覆盖问题。对于四个子棋盘,如果有奇异方格,那么递归解决棋盘覆盖问题。如果没有奇异方格,那么进行如下操作:1.如果这个子棋盘是左上部分的,先将子棋盘的右下角的方格变为奇异方格,然后递归解决覆盖问题。2.如果这个子棋盘是右上部分的,先将子棋盘的左下角的方格变为奇异

2014-12-06 22:46:03 1523

原创 快速排序

一、快速排序算法基本思想快速排序是基于分治思想的一种,在待排序列中选择一个数,在剩下的数中,大于这个数的放在它的右边,小于它的放在它的左边。然后,再递归的对左右两边的数据进行以相同的方式操作。二、快速排序的数据结构数组,以选择的数为基准,大于它的放在右边,小于它的放在左边。三、排序过程图解四、算法源代码#includeint ar

2014-12-06 21:25:55 398

原创 归并排序

一、归并排序算法基本思想归并排序是基于分治的思想,把整个数组Array的排序问题,分成两个子数组Array1和Array2的先各自排序,然后合并成一个新数组的问题。以此递归下去,直到子数组的大小为1的时候,结束递归调用。二、归并排序的数据结构利用数组,以递归树的形式来解决。三、排序过程图解四、算法源代码1.二路归并排序/*

2014-12-06 19:49:19 387

原创 冒泡排序

一、插入排序算法基本思想冒泡排序是选择排序的一种。每一趟遍历数组,确定一个最大(如果升序排序)元素通过冒泡的形式把它至于数组的未排好序的末尾处。二、插入排序的数据结构一个数组分成两部分,前头的是未好序的,后边是排好序的。三、排序过程图解四、算法源代码1.普通冒泡排序#includeint array[] = {-3

2014-12-06 19:32:29 418

原创 插入排序

一、插入排序算法基本思想在未排序的序列中选择一个元素,插入到已经排好序的序列中。二、插入排序的数据结构一个数组分成两部分,前头的是排好序的(刚开始是第一个元素认为是排好序的),后边是未排序的。三、排序过程图解四、算法源代码#includeint array[] = {-34,3,5,34,5,0,9}; //待排序的数组int l

2014-12-06 18:55:53 373

TPC-H 2.17.3

数据库benchmark测试,网站经常访问不了,上传下给大家

2018-06-07

IOS初级UI控件Demo(Swift版)

这是关于IOS初级控件的一些Swift的示例代码,里面都有详细的注解,以及详细的属性解释

2014-12-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除