
算法学习
文章平均质量分 74
wuChen4646
专注云计算领域
展开
-
随机化快速排序
快速排序算法的实现并不难,算法平均意义上的时间复杂度是nlgn,最差意义上的时间复杂度是n*n,算法的好坏取决于所选取的用于划分数组的元素的大小。算法的思路是:将数组按照某个元素划分为两个部分,并单独对这两个部分数组进行就地排序,就地排序时重复利用划分的方法将数组分为更小的两部分。下面的代码在一般的快速排序的算法实现的基础上改进 将每次基准元素随机在区间选出一个元素,而不是默认选择区间第一个元原创 2014-11-09 19:42:48 · 606 阅读 · 0 评论 -
枚举排序的MPI实现
枚举排序(Enumeration Sort)是一种最为简单的排序算法,通常也被叫做秩排序(Rank Sort)。 该算法的基本思想是:对每一个要排序的元素统计小于它的所有元素的个数,从而得到该元素在整个序列中的位置。其时间复杂度为o(n^2)。其伪代码为: 输入为:a[1], a[2] , ... , a[n] 输出为:b[1], b[2] , ..., b[n]原创 2015-01-11 11:06:39 · 1776 阅读 · 0 评论 -
并行编程的设计模式
这篇文章是对这段时间学习并行编程中的设计模式的一个总结。有不当之处,希望得到大家的批评、指正。首先,所谓“并行编程中的设计模式”(patterns in parallel programming)仍处于不断的被发现、发掘的阶段。当前已经有各路人马对这一领域进行了研究,但远远没有达到统一认识的高度。也没有一套业界普遍 认同的体系或者描述。这就造成了当前这一领域的现状:从事研究的人有不同的背景,他转载 2014-12-04 10:06:20 · 1624 阅读 · 0 评论 -
离散对数计算的Sherwood 算法
问题描述:设 a=g^x mod p,记 log g,p a=x,称 x 为 a 的(以 g 为底模除 p)对数。从 p,g,a 计算 x 称为离散对数问题。 问题在于:给出 p,g,a,怎么求 x 简单算法:1 ∀x, 计算 g ^x最多计算 0≤x≤ p-1 或 1≤x≤p,因为实际上离散对数是循环群;2 验证 a=g ^x mod p 是否成立。dl原创 2014-11-27 20:51:12 · 2099 阅读 · 0 评论 -
基于Las Vegas 和回溯法的皇后问题(C语言描述)
基于Las Vegas 和回溯法的皇后问题(C语言描述),求N=12..20的最优StepVegas值 算法采用多次执行这种QueenLV算法(100次),求取成功率。对于不同的N(12—20)皇后问题,记录随机放n(n算法源代码(C描述):#include #include #include #include #define N 12#define RUN_T转载 2014-12-01 21:13:51 · 804 阅读 · 0 评论 -
随机选取一个长度为N的链表(N很大)里的K个元素
随机选取一个长度为N的链表(N很大)里的K个元素 - 编程珠玑给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现概率均等)。解法1: 先选中前k个, 从第k+1个元素到最后一个元素为止, 以k/i (i=k+1, k+2,...,N) 的概率选中第i个元转载 2014-11-24 21:47:47 · 908 阅读 · 0 评论 -
回溯算法2
用回溯算法实现求幂集。 题意: 求含N个元素的集合的幂集。 如对于集合A={1,2,3},则A的幂集为0 p(A)={{1,2,3},{1,2},{1,3},{1},{2,3},{2},{3},Φ} 分析:幂集的每个元素是一个集合,它或是空集,或含集合A中的一个元素,或含A中的两个元素,或者等于集合A。反之,集合A中的每一个元素,它只有两种状态:属于幂集的元素集,或不属于原创 2014-11-07 21:22:00 · 620 阅读 · 0 评论 -
选择和排序的Sherwood算法
将选择和排序的确定算法修改为Sherwood算法很简单,但是当算法较复杂,例如它是一个缺乏文档资料的软件包的一部分时,就很难对其进行修改。注意,只有当该算法平均时间性能较优,但最坏性能较差时,才有修改的价值。一般方法是:1 将被解的实例变换到一个随机实例。// 预处理2 用确定算法解此随机实例,得到一个解。3 将此解变换为对原实例的解。 // 后处理原创 2014-11-25 16:15:46 · 1202 阅读 · 0 评论 -
解决等概率随机抽样问题
最近在优快云技术贴区看到一个帖子讨论这个问题:问题:100个苹果完全随机分给4人,每人可能得0~100个。设计一个随机分配算法。要求:在结果随机(不可预知)基础上每种分配概率均等。如(25,25,25,25),(0,0,0,100)都是分配结果,机率一样。看到下面有大量的讨论,我感觉都不是很对,所以写了这篇那博文,来讨论下这个问题。下面我们先看看随机抽样问题,理解了这个算法,转载 2014-11-26 15:38:30 · 1941 阅读 · 0 评论 -
随机算法 实现估算集合的势
问题描述:估算一个集合中元素的个数原创 2014-11-25 15:27:32 · 1145 阅读 · 2 评论 -
链表判断环问题
问题:编写函数原创 2014-11-19 15:39:33 · 573 阅读 · 0 评论 -
数学问题(1 )--素数筛法
问题:n原创 2014-11-18 22:03:00 · 469 阅读 · 0 评论 -
约瑟夫C语言实现
最近几个月学JAVA,python比较多,很久没怎么写C代码了,最近开始决定用C实现一些算法练练手,不然马上研一下学期实验室项目启动以后要用C做项目写大量代码就囧了。 先写一个约瑟夫环的算法实现 约瑟夫环问题:n个人围成一圈,从第k人个开始报数,假设数到m的人出圈,最后剩下一个,求这个人的编号。解题思路比较清晰:一般有2种实现方法,比较经典的就是用n个节原创 2014-10-31 15:47:58 · 2154 阅读 · 0 评论 -
爬山法实现 八皇后问题 (Python 实现)
本文主要简单阐述爬山法的基本算法思想,并给出用此算法实现八皇后问题详细过程最基本的爬上搜索算法表示:(节选自《人工智能》第二版):function HILL-CLIMBING(problem) return a state thate is a locak maximum inputs: problem local variables: current,原创 2015-04-24 11:13:08 · 9910 阅读 · 2 评论