
数据结构与算法
文章平均质量分 62
longshengguoji
这个作者很懒,什么都没留下…
展开
-
编程珠玑之1.4生成小于n且没有重复的k个整数
生成小于n且没有重复的k个整数可以使用如下方法:方法一:使用C++的set,由于set具有排序功能,而且里面的数不会重复,所以可以生成随机数字插入到set中,直到set中的数字个数为k,具体代码如下://solution 1:use set#include#include#include#includeusing namespace std;#define N 100原创 2013-01-08 20:00:00 · 1569 阅读 · 0 评论 -
编程珠玑之1.2位逻辑运算实现位向量
所谓位向量就是由一些二进制位组成的向量,位逻辑运算有与(&).或(|),非(!),移位(>)等。 使用位逻辑运算实现位向量所指实现位向量的设置,清零以及探测功能。#define BITPERWORD 32#define SHIFT 5#define MASK 0x1F#define N 10000000int a[1+N/BITPERWORD]//设置数组第i位为1v原创 2013-01-06 22:27:17 · 3402 阅读 · 0 评论 -
Dijkstra算法详解
1.dijkstra算法简介Dijkstra算法是由E.W.Dijkstra于1959年提出,又叫迪杰斯特拉算法,它应用了贪心算法模式,是目前公认的最好的求解最短路径的方法。算法解决的是有向图中单个源点到其他顶点的最短路径问题,其主要特点是每次迭代时选择的下一个顶点是标记点之外距离源点最近的顶点。但由于dijkstra算法主要计算从源点到其他所有点的最短路径,所以算法的效率较低。2.dij原创 2013-08-31 19:03:25 · 156774 阅读 · 12 评论 -
大话数据结构之三:线性表
1.定义:线性表表示0个或者多个数据元素的有限序列线性表的特性有:除第一个元素外,每一个元素均有一个直接前驱出最后一个元素外,每一个元素均有一个直接后继2.线性表抽象数据类型ADT List Data /*线性表的数据对象集合为{a1,a2,...,an},每个元素的类型均为DataType.其中,除第一个元素a1外, 每一个元素有且只有原创 2013-06-27 23:38:58 · 4299 阅读 · 3 评论 -
大话数据结构之二:算法
1.数据结构和算法的关系个人感觉程序=算法+数据结构。数据结构是算法实现的基础,算法总是要依赖于某种数据结构来实现的。往往是在发展一种算法的时候,构建了适合于这种算法的数据结构。当然数据结构和算法也有区别:数据结构关注的是数据的逻辑结构、存储结构以及基本操作,而算法更多的是关注如何在数据结构的基础上解决实际问题。算法是编程的思想,数据结构则是这些思想的逻辑基础。2.算法定义算法是解决特原创 2013-06-16 23:57:54 · 3167 阅读 · 0 评论 -
数据结构开场白
数据结构不难学,当时学的时候感觉很难,但是考研复习的时候就感觉不是这么难了,现在为了找工作,重新捡起数据结构,用最快的时间把大话数据结构这本书给消化道,加油!1.基本概念和术语1.1数据: 是描述客观事物的符号是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据元素:是组成数据的,有一定意义的单位,在计算机中通常作为整体处理。也被称为原创 2013-06-14 16:21:58 · 2153 阅读 · 0 评论 -
动态规划法
1.定义及性质 动态规划是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题[1]和最优子结构性质的问题,用时往往远少于朴素解法。动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。 通常许多子问题非常相似,为此原创 2013-04-15 23:34:33 · 7080 阅读 · 2 评论 -
百度面试题:求一个已排序的数组中绝对值最小的元素
题目为:有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。这一题该如何求呢?初步的解决思路是: 1.数组中的元素全为正,取最左边的数字; 2.数组中原创 2013-01-29 22:57:55 · 5620 阅读 · 3 评论 -
排序算法——快速排序
今天介绍快速排序,这也是在实际中最常用的一种排序算法,速度快,效率高。就像名字一样,快速排序是最优秀的一种排序算法。思想快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n转载 2012-11-23 08:39:25 · 798 阅读 · 0 评论 -
并行算法的一般设计过程
1. PCAM设计方法学设计并行算法的四个阶段:划分(Partitioning):分解成小的任务,开拓并发性通讯(Communication):确定诸任务间的数据交换,监测划分的合理性;组合(Agglomeration):依据任务的局部性,组合成更大的任务;映射(Mapping):将每个任务分配到处理器上,提高算法的性能。2. 划分充分开拓算法的并发性和可扩放性;先原创 2012-12-02 22:21:47 · 11777 阅读 · 1 评论 -
下一代信息推荐系统的算法设计与性能评估
信息总量的爆炸性增长导致“信息过载”——用户难以在海量信息中找到自己需要的对象。信息推荐系统被认为是解决信息过载最有效的工具[1],其最早的研究可以追溯到30年前[2],而90年代早期关于信息推荐的概念就已基本成型[3]。传统推荐系统往往基于用户或对象的相似性,本质上是集中化的静态系统[4]。海量数据的出现,Web2.0技术的成熟,用户实时反馈需求的增加和在线社会网络的涌现提出了对下一代信转载 2012-12-04 08:10:23 · 1288 阅读 · 0 评论 -
并行算法设计的一般方法
1.串行算法的直接并行化发掘和利用现有串行算法中的并行性,直接将串行算法改造为并行算法。由串行算法直接并行化的方法是并行算法设计的最常用方法之一;不是所有的串行算法都可以直接并行化的;一个好的串行算法并不能并行化为一个好的并行算法;许多数值串行算法可以并行化为有效的数值并行算法。2.重新设计并行算法从问题本身描述出发,不考虑相应的串行算法,设计一个全新的并行算法挖掘原创 2012-12-02 22:23:03 · 3960 阅读 · 0 评论 -
并行算法的设计技术
1. 划分设计技术1.1均匀划分技术n个元素A[1..n]分成p组,每组A[(i-1)n/p+1..in/p],i=1~p示例:MIMD-SM模型上的PSRS排序 begin (1)均匀划分:将n个元素A[1..n]均匀划分成p段,每个pi处理 A[(i-1)n/p+1..in/p]原创 2012-12-02 22:20:13 · 3193 阅读 · 0 评论 -
并行程序设计基础
并行程序设计难的原因Ø 技术先行,缺乏理论指导Ø 程序的语法/语义复杂, 需要用户自已处理任务/数据的划分/分配 数据交换同步和互斥 性能平衡Ø 并行语言缺乏代可扩展和异构可扩展, 程序移植困难, 重写代码难度太大Ø 环境和工具缺乏较长的生长期,缺乏代可扩展和异构可扩展并行语言的构造方法3种并行程序设计方法比较: 方法原创 2012-12-02 22:18:50 · 2177 阅读 · 0 评论 -
并行计算的3中基本模型
1.PRAM模型 PRAM(Parallel Random Access Machine)模型是单指令流多数据流(SIMD)并行机中的一种具有共享存储的模型。它假设有一个无限大容量的共享存储器,并且有多个功能相同的处理器,在任意时刻处理器可以访问共享存储单元。分类: 根据是否可以同时读写,它又分为以下三类:PRAM-EREW,PRAM-CREW,PRAM-CRCW(其中C代表Cu原创 2012-11-25 23:19:36 · 3372 阅读 · 0 评论