算法
文章平均质量分 65
billfeller
https://github.com/billfeller
展开
-
常用的排序算法
l转自:http://blog.csdn.net/riag/article/details/1680384 这几天, 花点时间复习了常用排序算法, 并动手编一下。这里并不解说各种排序算法,只提供代码./** * 提供常用的排序算法 * 包括: 直接插入排序, 折半插入排序, 希尔排序, 直接选择排序, 堆排序, 冒泡排序, 快速排序, 二路归并排序 *转载 2012-03-30 10:04:02 · 659 阅读 · 0 评论 -
[算法实现]选择n次(n≥M), 能集齐M种卡片的概率是多大?
作者:zhanhailiang 日期:2013-12-08一个礼盒由5种不同颜色(红, 橙, 蓝, 绿)的小球, 每次取小球概率相同, 请问取多少次小球可以取全5种颜色的小球?数学分析请见:选择 n 次 (n ≥ M),能集齐 M 种卡片的概率是多大?程序实现/** * @version 1.0 * @author wade *原创 2013-12-08 12:22:24 · 3671 阅读 · 1 评论 -
【算法】查找第k小的数【JS实现】
作者:zhanhailiang 日期:2012-12-17问题:已知序列A[1…n],及整数k, 1⇐k⇐n,试查找A中第k小的数这个问题一般被称为顺序统计或选择问题。常规思路是对A[1…n]进行排序取第k的元素即可。但本文将介始一种算法来高效的获取第k小的元素。该算法思想和快速排序相同。在快速排序中,序列被支点分割成两个子序列,然后分别对这两个子序列递归排序。现在我们要先确定第k原创 2012-12-17 23:10:09 · 939 阅读 · 0 评论 -
【算法】随机化快速排序【JS实现】
作者:zhanhailiang 日期:2012-12-16我们知道,【快速排序】算法的平均时间复杂度为O(nlogn)。但是当输入是已经排序的数组或几乎排好序的输入,时间复杂度却为O(n^2)。为解决这一问题并保证平均时间复杂度为O(nlogn)的方法是引入预处理步骤,它惟一的目的是改变元素的顺序使之随机排序。这种预处理步骤可在O(n)时间内运行。能够起到同样作用的另一种简单方法是在算法中原创 2012-12-16 15:26:29 · 1225 阅读 · 0 评论 -
【算法】选择排序【JS实现】
作者:zhanhailiang 日期:2012-12-17令A[1…n]为有一个有n个元素的数组,选择排序的算法描述为:首先找到最小元素,将其存放在A[1]中,然后找到剩下的n-1个元素中的最小元素,将其存放在A[2]中,重复此过程直到找到第二大的元素将其存放在A[n-1]中,这种方法称为选择排序。/*******************************************原创 2012-12-17 22:20:18 · 949 阅读 · 0 评论 -
【算法】插入排序【JS实现】
作者:zhanhailiang 日期:2012-12-17所谓插入排序,是指从大小为1的子数组A[1]开始,它自然是有序的,接下来将A[2]插入到A[1]的前面或后,这取决于A[2]比A[1]大还是小。继续这一过程,则在第i次执行中,要将A[i]插入到已排序的子数组A[1…i-1]中的合适位置上,应这样进行:依次扫描从i-1到1的元素,每次都将A[i]和当前位置的元素比较。在扫描的每一步,原创 2012-12-17 22:32:46 · 1199 阅读 · 0 评论 -
【算法】快速排序【JS实现】
作者:zhanhailiang 日期:2012-12-25在描述快速排序前需要以下划分算法,它是快速排序的基础。1.划分算法 设A[low…high]是n元数组,且x = A[low]。考虑重新安排数组A中元素,使得小于或等于x的元素排在x的前面,随后x又在所有大于它的元素的前面。经过这样的排列后,经过数组中元素改变排列后,对于某个w,low ⇐ x ⇐ high,A[w] = x原创 2012-12-16 14:47:50 · 2560 阅读 · 0 评论 -
【算法】插入排序【awk实现】
作者:zhanhailiang 日期:2012-12-15bill@net:~/code$ cat grade.sort.awk function sort(array, elements, temp, i, j) { for(i = 2; i = elements; i++) { for(j = i; array[j-1] > array[j]; j--) {原创 2012-12-15 01:22:03 · 1135 阅读 · 0 评论 -
【算法】合并排序【JS实现】
作者:zhanhailiang 日期:2012-12-171.首先需要引入合并两个已排序的表的算法 假设有一个数组A[1…m],p,q,r为它的三个索引,并有1⇐p⇐q/*****************************************************************************算法:merge输入:数组A[1...m],p,q,r为它的原创 2012-12-17 00:38:32 · 1035 阅读 · 0 评论 -
基于Javascript的队列和栈的实现
作者 : zhanhailiang 日期 : 2012-10-30队列实现: var queue = function () { var a = {}, b = []; a.add = function (d) { b.push(d); return a; };原创 2012-10-30 20:49:47 · 741 阅读 · 0 评论 -
如何用随机函数rand5来构造随机函数rand7 一道经典的算法题
试一下以对话的方式写博~如果看不到人物头像,请刷新页面获取最新的CSS。如果有建议或意见,欢迎到我的微博上跟帖~ 这里是腾讯微博,这里是新浪微博。常规方法今天公司有一个面试题是这样的:假如有一个函数rand5能等概率生成1 - 5 之间的整数,如何利用rand5来实现rand7?rand7函数的要求是能够等概率生成1 - 7之间的整数。说实话我自己也不是很清楚。转载 2012-08-13 20:42:01 · 962 阅读 · 0 评论 -
收集一些top软件公司经典算法面试题
转自:http://www.nowamagic.net/librarys/veda/detail/1261 还有多篇优秀的文章,请见列表:如何用随机函数rand5来构造随机函数rand7 101 views海盗分宝石面试题的头脑风暴 778 views趣味算法:老鼠试毒瓶问题 507 viewsJavaScript语言描述的最大公共子串问题 34转载 2012-08-13 21:45:16 · 1826 阅读 · 0 评论 -
标准的Base64算法描述
作者:zhanhailiang 日期:2014-12-19算法描述:Base64要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。第一个字符通过右移2位获得第一个目标字符的Base64表位置,根据这个数值取到表上相应的字符,就是第一个目标原创 2014-12-19 23:30:22 · 1875 阅读 · 0 评论