算法
文章平均质量分 91
net_assassin
这个作者很懒,什么都没留下…
展开
-
算法导论01
原创 2012-10-16 09:09:11 · 572 阅读 · 0 评论 -
九种常用排序的性能分析总结
间间断断的将9种排序实现,并且将其以博客笔记的形式记录下来;现在就该来综合的分析这九种排序,让我们先来看看其算法复杂度和稳定性的分析结果:算法复杂度以及稳定性分析算法名称平均时间辅助空间稳定性冒泡排序O(n2)O(1)是选择排序O(n2)O(1)否插入排序O(n2)O(1)是转载 2013-08-19 20:49:06 · 4042 阅读 · 0 评论 -
算法-求二进制数中1的个数
问题描述任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4这也是一道比较经典的题目了,相信不少人面试的时候可能遇到过这道题吧,下面介绍了几种方法来实现这道题,相信很多人可能见过下面的算法,但我相信很少有人见到本文中所有的算法。如果您上头上有更好的算法,或者本文没有提到的算法,请不要吝惜您的代码,分享的转载 2013-08-22 20:20:36 · 3816 阅读 · 0 评论 -
最长递增子序列 O(NlogN)算法 ( DP + 二分查找)
今天看编程之美,看到最长递增子序列问题。解法二看了两遍感觉越来越糊涂。感觉表述有欠妥之处。它不应该说长度为i的最大值的最小值,应该说成长度为i的序列中尾端最小的值。不知道表达明白了没有。看下面这个帖子吧,感谢felix的分享。看了好久好久,现在终于想明白了。试着把它写下来,让自己更明白。最长递增子序列,Longest Increasing Subsequence 下面我们简转载 2013-08-23 22:57:51 · 3961 阅读 · 0 评论 -
数组分割
问题:1. 有一个无序、元素个数为2n的正整数数组,要求:如何能把这个数组分割为两个子数组,子数组的元素个数不限,并使两个子数组之和最接近。1. 解法1:由于对两个子数组和最接近的判断不太直观,我们需要对题目进行适当转化。我们知道当一个子数组之和最接近原数组之和sum的一半时,两个子数组之和是最接近的。所以转化后的题目是:从2n个数中选出任意个数,其和尽转载 2013-08-24 10:47:20 · 5159 阅读 · 0 评论 -
编程之美3.6——编程判断两个链表是否相交
问题:给出两个单向链表的头指针,而两个链表都可能带环,判断这两个链表是否相交,并且给出他们相交的第一个节点。解法:参考http://blog.csdn.net/ldong2007/article/details/4544203(1)判断链表是否存在环设置两个链表指针(fast, slow),初始值都指向链表头结点,然后连个指针都往前走,不同的是slow每转载 2013-08-24 17:33:47 · 3870 阅读 · 0 评论 -
华为2012上机题
输入一个int N ,统计1-N中含有7或能被7整除的数的个数思路: 能被7整除的数很好求 N/7 个 。 再求1-N中含有7的数字个数。最后要减去重叠部分检测含有7的个数的代码如下:#include #include #include #include using namespace std;clock_t start,finish;int原创 2013-09-01 10:58:46 · 4014 阅读 · 0 评论 -
排序题目一网打尽
排序一、选择题1.某内排序方法的稳定性是指( )。A.该排序算法不允许有相同的关键字记录 B.该排序算法允许有相同的关键字记录C.平均时间为0(n log n)的排序方法 D.以上都不对2.下面给出的四种排序法中( )排序法是不稳定性排序法。 A. 插入 B. 冒泡 C. 二路归并原创 2013-09-04 16:41:45 · 4789 阅读 · 1 评论 -
各种内部排序
#include using namespace std;void swap(int &x,int &y){ if (x != y) { int temp = x; x = y; y = temp; }}/////////////////////////////////////////////////////////////////////////InsertSor原创 2013-09-05 15:46:13 · 4256 阅读 · 0 评论 -
N皇后问题
#include#include#includeusing namespace std;int search(int);int print();int n,sum = 0;int f[1001],b[1001] = {0},c[2002] = {0},d[2002] = {0};int main(){ cin>>n; search(1); s原创 2014-07-20 10:28:51 · 4180 阅读 · 0 评论 -
短小精悍的线性筛法求素数
输入n,求n以内的所有素数算法用两个数组存储数据:一个是prime[],存储n以内所有的素数,其index为pi,初值为0一个是is_prime[i],表示自然数i(i原创 2014-11-20 14:18:26 · 4625 阅读 · 2 评论 -
求一个字符串中连续出现次数最多的子串
/* Author: Mcdragon Date: 15-07-11 21:17 Description: 求一个字符串中连续出现次数最多的子串. 基本算法描述: 给出一个字符串abababa 1.穷举出所有的后缀子串 substrs[0] = abababa; substrs[1] = bababa; substr转载 2013-08-19 20:41:30 · 3375 阅读 · 0 评论 -
c++阶乘问题
//任何一个数都可以用阶乘的形式来表示:N=a!+b!+….c!,要求a>=b>=..>=c,并且a,b,..,c尽可能大。//比如6表示成:6=3! 而不能表示成:6=2!+2!+2!或 6=2!+2!+1!+1!//这样就可以把一个数用阶乘式唯一表示,如:10=3!+2!+2! 90=5!+4!+3!//程序要求:输入一个数N(N<100000),输出N的阶乘式 #include #原创 2013-07-14 09:38:44 · 2998 阅读 · 0 评论 -
算法导论02
原创 2012-10-28 22:02:15 · 531 阅读 · 0 评论 -
求质数算法的N种境界(N>10)
声明:本文系转载自网友 编程随想 的博客,原文:http://program-think.blogspot.com/2011/12/prime-algorithm-1.htmls★引子 前天,俺在《俺的招聘经验[4]:通过笔试答题能看出啥?》一文,以"求质数"作为例子,介绍了一些考察应聘者的经验。由于本文没有政治敏感内容,顺便就转贴到俺在CSDN的镜像博客。 昨天,某个CSDN转载 2013-05-22 15:23:31 · 4023 阅读 · 3 评论 -
最多约数问题
问题描述: 正整数x的约数是能整除x的正整数。正整数x 的约数个数记为div(x)。例如,1,2,5,10 都是正整数10 的约数,且div(10)=4。设a 和b 是2 个正整数,a≤b,找出a和b之间约数个数最多的数x。 编程任务: 对于给定的2个正整数a≤b,编程计算a 和 b 之间约数个数最多的数。 数据输入: 输入数据由文件名为input.txt的文本文件提供。文件的原创 2013-05-23 10:29:06 · 9466 阅读 · 3 评论 -
算法(分治)合并排序和快速排序
首先说一下分治法的基本思想,分治法是把一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同(这里需要注意分治算法与动态规划的区别)。递归地解这些子问题,然后将各子问题的解合并得到原问题的解。这里要谈到的合并排序和快速排序便是分治算法的典型应用之一。首先看合并排序,其基本思想是将待排序元素分成大小大致相同的2个子集合,分别对2个子集合进行排序,最终讲排好序的子集合合转载 2013-05-25 20:19:10 · 1655 阅读 · 0 评论 -
最大间隙问题
问题描述: 给定n个实数x1,x2,...,xn,求这n个实数在实轴上相邻2个数之间的最大差值,要求设计线性的时间算法。解:如果不考虑题目的限制条件,那么这道题目不难,很容易想到将这n个实数进行排序,然后遍历,那么所用时间为Z = T(N) + G(N) 其中,T(N) 为对那个实数进行排序所需要的时间,G(N)为遍历n个实数原创 2013-05-27 20:24:35 · 1155 阅读 · 0 评论 -
字符串的所有不重复组合
输出一个串的所有可能字符组合,例如输入“abcd“,输出a,b,c,d,ab,ac,ad,bc,bd,cd,abc,abd,acd,bcd,abcd输入串可能会有重复字符,例如输入”abcc“,输出a,b,c,ab,bc,ac,cc,abc,acc,bcc请设计算法和写出代码或伪代码c++代码如下:/***************************************原创 2013-05-14 16:09:33 · 2923 阅读 · 0 评论 -
大数据时代,海量数据处理常用思路和方法总结
大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯这样的一些涉及到海量数据的公司经常会问到。下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。 1.Blo转载 2013-05-29 19:59:35 · 2518 阅读 · 1 评论 -
众数问题分析
问题描述•给定一个数组,找出其中出现次数最多的那个元素(即众数)。核心思想•普遍的解决思路。•如果我们将所有元素的出现次数进行统计,并从中找出次数中的最大值,那么,这个最大值对应的元素就是众数。•从这一思想出发,我总结出以下两种算法:–算法1:利用排序算法统计–算法2:利用数组或散列表统计算法1•算法思路:首先将数组元素按照大小排序,然后按顺序扫描一遍数原创 2013-05-29 20:41:55 · 7874 阅读 · 1 评论 -
STL partition
Partition range in twotemplate BidirectionalIterator partition (BidirectionalIterator first, BidirectionalIterator last, UnaryPredicate pred);Rearra原创 2013-06-01 14:58:39 · 2590 阅读 · 0 评论 -
大数相乘
/*本程序假设所输入的大数均在20位以内,并且输入数字时候假定不出现非法情况(例如不存在这样情况123a78ty等)这里只完成了大数的乘法运算*/#include "stdio.h"#define MAX 21void InputNumber(int []); //输入大数void InitNumber(int []);原创 2013-06-04 21:33:32 · 725 阅读 · 0 评论