算法/数据结构
文章平均质量分 95
Sodaslay
这个作者很懒,什么都没留下…
展开
-
快速排序(quicksort)算法实现
快速排序(quicksort)是分治法的典型例子,它的主要思想是将一个待排序的数组以数组的某一个元素X为轴,使这个轴的左侧元素都比X大,而右侧元 素都比X小(从大到小排序)。然后以这个X在变换后数组的位置i分为左右两个子数组,再分别进行快速排序,直到子数组中只有一个元素为止。快速排序算法如下void quicksort(int A[], int p, int r){转载 2015-04-01 18:43:00 · 1045 阅读 · 0 评论 -
RSA 算法原理(一)
原文地址:http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html作者: 阮一峰日期: 2013年6月27日如果你问我,哪一种算法最重要?我可能会回答"公钥加密算法"。因为它是计算机通信安全的基石,保证了加密数据不会被破解。你可以想象一下,信用卡交易被转载 2017-07-26 19:13:22 · 573 阅读 · 0 评论 -
RSA 算法原理(二)
原文地址:http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html作者: 阮一峰日期: 2013年7月 4日上一次,我介绍了一些数论知识。有了这些知识,我们就可以看懂RSA算法。这是目前地球上最重要的加密算法。六、密钥生成的步骤我们通过一个例子转载 2017-07-26 19:14:23 · 431 阅读 · 0 评论 -
一起写一个 JSON 解析器
原文地址:http://www.cnblogs.com/absfree/p/5502705.html【本篇博文会介绍JSON解析的原理与实现,并一步一步写出来一个简单但实用的JSON解析器,项目地址:SimpleJSON。希望通过这篇博文,能让我们以后与JSON打交道时更加得心应手。由于个人水平有限,叙述中难免存在不准确或是不清晰的地方,希望大家可以指正:)】一、JSON解转载 2017-08-18 00:38:19 · 524 阅读 · 0 评论 -
小而巧的数字压缩算法:zigzag
原文地址:http://blog.csdn.net/zgwangbo/article/details/51590186阅读facebook开源的RPC(Remote Procedure Call)框架thrift源代码的时候,本来是在阅读框架,却不小心被zigzag这个钻石般闪耀的代码吸引。后来去百度搜索zigzag,却得到满屏图像相关的一个算法(看来起名字得有特点才行)。既然转载 2017-08-17 22:47:03 · 6131 阅读 · 0 评论 -
iOS 实现 UIImageView 透明区域点击事件穿透
原文地址:http://wonderffee.github.io/blog/2013/07/10/pass-touch-event-through-uiimageviews-transparent-area-in-ios/问题最近要在iPad上实现一个很独特的功能,简单描述一下就是要显示一个带有半透明背景的弹出界面,在其上加一个不规则形状的图片,手指点击这个弹出界面转载 2017-06-12 21:38:05 · 986 阅读 · 0 评论 -
iOS中图形图像处理第一部分:位图图像原图修改
转载自Cocoa China,原文地址:http://www.cocoachina.com/industry/20140812/9363.html在图形图像处理教程的第一节,主要讲解位图图像原图的修改。一但你明白基本的图形处理方法,那么其它的相关内容你也会较容易的弄明白。在教程的第二部分,主要介绍另外的三种修改图像“”阅读器转载 2017-05-13 11:47:18 · 693 阅读 · 0 评论 -
一道腾讯面试题的思考:到底谁会赢?
最近看到一道腾讯面试题,觉得很有意思。题干如下: 有甲乙两家伙用一个英语单词玩游戏(无聊的人还是很多的!!!)。两个人轮流进行,每个人每次从中删掉任意一个字母,如果剩余的字母序列是严格单调递增的(按字典序a 输入: 一连串英文小写字母,长度任意(当然要在计算机能承受的范围内),保证最开始的状态不是一个严格单增的序列。输出:1表示甲可以赢,0表示甲不能赢。转载 2015-04-01 17:21:28 · 527 阅读 · 0 评论 -
Twitter算法面试题详解(Java实现)
最近在网上看到一道Twitter的算法面试题,网上已经有人给出了答案,不过可能有些人没太看明白(我也未验证是否正确),现在给出一个比较好理解的答案。先看一下题目。图1先看看这个图。可以将方块看做砖。题干很简单,问最多能放多少水。例如,图2就是图1可放的最多水(蓝色部分),如果将一块砖看做1的话,图2就是能放10个单位的水。图2再看个例子转载 2015-04-01 17:16:20 · 554 阅读 · 0 评论 -
选择排序(selection sort)算法实现
从字面上理解,就是通过不断地选择数组元素,从而达到排序的目的。我插入排序类似,假设第i(i算法的时间复杂度为O(n^2)。算法的实现如下#include stdio.h>void output_array(int data[], int n){ int i; for(i = 0; i n; i++) printf("%d ",转载 2015-04-01 18:45:54 · 438 阅读 · 0 评论 -
百度面试题:求绝对值最小的数
有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。算法实现的基本思路找到负数和正数的分界点,如果正好是0就是它了,如果是正数,再和左面相邻的负数绝对值比较,如果是负数,取取转载 2015-04-01 17:08:38 · 923 阅读 · 0 评论 -
世界上最早的算法:辗转相除法(求两个自然数最大公约数)
在数学界,辗转相除法,又称欧几里得算法,被认为是世界上最早的算法(公元前300年),该算法用于求两个最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题yⅠ和Ⅱ)中,而在中国则可以追溯至东汉出现的《九章算术》。 两个自然数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数。例转载 2015-04-01 17:10:26 · 1366 阅读 · 0 评论 -
创新工厂面试题详解:共打了多少鱼
最近看到一个创新工厂的面试题,很有意思,下面给出算法实现(Java代码)。如果哪位有更好的算法,请跟贴。 abcde五人打渔,打完睡觉,a先醒来,扔掉1条鱼,把剩下的分成5分,拿一份走了;b再醒来,也扔掉1条,把剩下的分成5份,拿一份走了;然后cde都按上面的方法取鱼。问他们一共打了多少条鱼,写程序和算法共打了多少条鱼的结果有很多。但求最少打的鱼的结转载 2015-04-01 17:04:00 · 683 阅读 · 0 评论 -
希尔排序(shellsort)算法实现
希尔排序(shellsort)又叫增量递减(diminishing increment)排序,是由D.L. Shell发明的,这个算法是通过一个逐渐减小的增量使一个数组逐渐趋近于有序从而达到排序的目的。 假设有一个数组int data[16] = {...}。 首先将这个增量设为16 / 2 = 8, 这样就将这个数组分成了8个子数组,它们的索引是0, 8 1, 9 2转载 2015-04-01 18:45:27 · 522 阅读 · 0 评论 -
归并排序(merge sort)算法实现
归并排序(merge sort)体现了分治的思想,即将一个待排序数组分为两部分,对这两个部分进行归并排序,排序后,再对两个已经排序好的数组进行合并。这种思想可以用递归方式很容易实现。归并排序的时间复杂度为O(nlogn),空间复杂度为O(n)。实现代码如下:#include stdio.h> #include "common.h" void merge(int data[],转载 2015-04-01 18:43:48 · 598 阅读 · 0 评论 -
哈希表深入理解
原文地址:http://ios.jobbole.com/87716/这篇文章由一个简单的问题引出:有两个字典,分别存有 100 条数据和 10000 条数据,如果用一个不存在的 key 去查找数据,在哪个字典中速度更快?有些计算机常识的读者都会立刻回答: “一样快,底层都用了哈希表,查找的时间复杂度为 O(1)”。然而实际情况真的是这样么?答案是转载 2017-10-14 21:15:56 · 577 阅读 · 0 评论