
算法
jeffasd
这个作者很懒,什么都没留下…
展开
-
改进的冒泡排序算法
http://student.zjzk.cn/course_ware/data_structure/web/paixu/paixu8.1.1.1.htmhttp://www.cnblogs.com/lanxuezaipiao/archive/2013/03/16/2963928.html冒泡排序算法,是最基本的排序算法, 它属于交换排序。冒泡排序过程设想被排序的转载 2016-05-29 23:35:38 · 603 阅读 · 0 评论 -
插入排序与希尔排序详解
插入排序与希尔排序详解参考文章:点击打开链接1、基本思想:希尔排序也成为“缩小增量排序”,其基本原理是,现将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插入排序,待整个待排序列“基本有序”后,最后在对所有元素进行一次直接插入排序。因此,我们要采用跳跃分割的策略:将相距某个“增量”的记录组成一个子序列,这样才能保证在子序列内分别进行直接插入排序后得到的原创 2017-06-05 16:53:03 · 510 阅读 · 0 评论 -
堆排序详解
堆排序是利用堆的堆序性,对于最小堆而言,最小元素在堆顶,对于一个数组先通过将其建立成一个最小堆 然后一个一个删除其堆顶元素既实现了排序。当堆的顶部最小元素被删除后要对堆做调整使其再次满足堆序性。由于对堆做一次调整最坏时间复杂度为O(logN),堆排序需要对堆做N-1次调整 所以堆排序最坏时间复杂度为O(NlogN),不过其比快排多开辟了一个堆的存储空间。堆排序的详细实现如下:////原创 2017-06-05 18:23:40 · 1004 阅读 · 0 评论 -
8位字节对齐算法
//8位字节对齐算法void testAlign(){ for (int i = 0; i <= 10; i++) { int align = align8Bit(i); printf("the align is %d\n", align); }}unsigned int align8Bit(unsigned int n){ return原创 2017-06-06 11:00:15 · 5149 阅读 · 0 评论 -
素数判断详解
素数判断详解参考文章:点击打开链接对于判断素数大概有两类方法1:试除法2:筛选法还有一个米勒-拉宾检验方法此处不再展开。试除法:不断地尝试能否整除。比如要判断自然数 x 是否质数,就不断尝试小于 x 且大于1的自然数,只要有一个能整除,则 x 是合数;否则,x 是质数。筛选法:首先,2是公认最小的质数,所以,先把所有2的倍数去掉;然后剩下的那些大于2的数里面,最小的是3,所以3也是质数;然后把所有3原创 2017-06-06 13:56:26 · 1036 阅读 · 0 评论 -
最大子序列和详解
最大子序列和详解在求解最大子序列和时可以使用多种不同的方法 其中对于分治思想:将一个n规模的问题分为2个n/2规模的问题,再将问题的解做简单合并。其中n/2规模的问题可以继续分开处理。对于最大子序列和最大值存在3种情况1在左边2在右边3跨越中间,如果跨越中间将左侧最左部分一直相加到右侧最右部分即可判断。 详细代码如下:void test(){ // int array[] = {4 ,原创 2017-06-06 14:25:30 · 668 阅读 · 0 评论 -
递归转化为循环
//将递归转化为for循环看例子将递归转为for循环需要求解递归关系,知道递归关系后就可以使用循环来实现。 如下示例 求解后知//f(n) = n * f(n - 1);代码详解如下:/** 求阶乘 */int factorial(int n){ static int calculateCount = 0; printf("calculate count is %d\n", cal原创 2017-06-06 14:42:16 · 1954 阅读 · 0 评论 -
常见的快速算法
常见的快速算法/** 最小公约数 */int testalgorithm1(int a, int b) { int m = a; while (m > 0) { m = a%b; a = b; b = m; } return a;}/** 2分法求平方根 */float sqrtCalculate(int n){原创 2017-06-06 14:57:42 · 493 阅读 · 0 评论 -
求幂运算的不同发法之间的时间复杂度比较
求幂运算的不同发法之间的时间复杂度比较求幂运算有多种方法其中每种方法时间复杂度不尽相同详解如下:void test(){ long long result = calculatePower(2, 4); printf("the result is %lld\n", result);}long long calculatePower(int x, int n){#if 0 - 此方原创 2017-06-06 14:53:51 · 1961 阅读 · 1 评论 -
归并算法详解
归并算法详解void testMergeSort(){ int length = 300; int array[length]; int j = 0; for (int i = length; i > 0; i--) { array[j++] = i; } printf("\n"); for (int j = 0; j < si原创 2017-07-03 19:41:01 · 742 阅读 · 0 评论 -
斐波那契数列的实现
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、原创 2017-06-13 10:47:42 · 378 阅读 · 0 评论 -
查找大于等于左侧所有数小于等于右侧所有数
在一个int数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数。实现void test(){ //int arr[] = {2, 5, 3, 6, 6, 9, 12, 7}; int arr[] = {2, 4, 3, 9, 6, 5, 7}; //int arr[] = { 2 3 3 5 5 5 7}; //int arr[] = {1,原创 2017-06-13 10:50:10 · 1262 阅读 · 0 评论 -
经典的快速排序算法
经典的快速排序算法 其中将一个数组按照枢纽元的大小将其分成左右两个部分的算法成为快速算法这个写个避免了判断相等的情况 当遇到元素与枢纽元相等时停止 目的是为了产生两个相对平衡的左右数组void testQuickSort(){ int arr[] = {2, 4, 3, 9, 6, 5, 7, 0, 2, 1}; //int arr[] = {0, 1, 2, 3, 4, 5, 6原创 2017-06-13 10:52:19 · 340 阅读 · 0 评论 -
找到数组中第几个最小的数据
找到数组中第几个最小的数据 将经典的快速排序算法做简单修改即可示例代码如下:void testFindSpecificMin(){ int arr[] = {2, 4, 3, 9, 6, 5, 7, 0, 2, 1}; //int arr[] = {4, 2, 9}; //int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; int posi原创 2017-06-13 10:53:45 · 1805 阅读 · 0 评论 -
希尔排序详解
参考文章:点击打开链接1、基本思想:希尔排序也成为“缩小增量排序”,其基本原理是,现将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插入排序,待整个待排序列“基本有序”后,最后在对所有元素进行一次直接插入排序。因此,我们要采用跳跃分割的策略:将相距某个“增量”的记录组成一个子序列,这样才能保证在子序列内分别进行直接插入排序后得到的结果原创 2017-06-05 16:44:11 · 570 阅读 · 0 评论 -
时间复杂度重要结论
时间复杂度重要的结论: 1:如果T(N) 是一个k次多项式 则T(N) = Θ(N¹²ºv^kv+^kVvv1+1Vvvv2^k) calculateCount calculateCountcalculateCountx=−b±b2−4ac‾‾‾‾‾‾‾‾√2ax=\frac{-b\pm\sqrt{b^2-4ac}}{2a}x=n2x=n^2原创 2017-06-01 11:09:06 · 596 阅读 · 0 评论 -
图像算法---磨皮算法研究汇总
http://blog.youkuaiyun.com/trent1985/article/details/50496969写这篇博客,也是对自己这段时间关于磨皮算法内容研究做个小结。目前,对于人脸磨皮算法,大家并不陌生,从PS到APP应用,可谓是层出不穷,这里我总结一下,具体流程如下:1,保边滤波器2,肤色检测3,图像融合4,锐化对于保边滤波器:转载 2016-08-04 21:17:33 · 3279 阅读 · 0 评论 -
数据结构排序
排序中的内容:http://student.zjzk.cn/course_ware/data_structure/web/paixu/paixu8.1.1.1.htm原创 2016-05-29 23:32:29 · 329 阅读 · 0 评论 -
常见算法小测试
http://m.blog.chinaunix.net/uid-27411029-id-3434720.html1. 编写用C语言实现的求n阶阶乘问题的递归算法:答:long int fact(int n){If(n==0||n==1) Return 1;Else Return n*fact(n-1);}2. 二分查找算法转载 2016-05-29 23:39:39 · 811 阅读 · 0 评论 -
快排,二分查找
// search_Bin.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"int binSearch(int a[6], int x, int len );int posFun(int * a, int low, int heigh);int binSearch(int a[6], int x, int len ){ int low =原创 2016-05-30 10:03:23 · 474 阅读 · 0 评论 -
二叉树中的那些常见的题
http://www.cnblogs.com/BeyondAnyTime/archive/2012/08/27/2659163.html二叉树作为树的一种,是一种重要的数据结构,也是面试官经常考的东西。昨天看了一下关于树中的面试题,发现二叉树中的面试题比较常见的题型大概有下面几个:创建一颗二叉树(先序,中序,后序)、遍历一颗二叉树(先序,中序,后序和层次遍历)、求二叉树中叶子节点的转载 2016-05-29 23:36:46 · 383 阅读 · 0 评论 -
HashTable浅析_算法艺术
http://www.shangxueba.com/jingyan/2216872.html被面试官问到了HashMap,答得不好,在这里再次学习一下,首先要达到的目的是明确HashMap是个什么东西,解决什么问题。本篇博客可能有一些理解不对的地方,敬请指出。 本篇博客耗时6小时。一、Hash特点 Hash,就是杂凑算法,Hash(str转载 2016-06-01 22:41:18 · 580 阅读 · 0 评论 -
Hash碰撞与拒绝服务攻击
http://www.cnblogs.com/xuanhun/archive/2012/01/01/2309571.html1.Hash与Hash碰撞 Hash,简单来讲,是一种将任意长度的输入变换成固定长度的输出,固定长度的输出在“实际应用场景”下可以代表该输入。Hash函数通常被翻译成散列函数。Hash通常用来校验信息的一致性。Hash函数的转载 2016-06-01 22:42:34 · 2800 阅读 · 0 评论 -
9.6.2 哈希查找之开放定址法解决哈希碰撞
http://blog.youkuaiyun.com/johnnyhu90/article/details/10822497开放定址法:(1) 线性探测法:逐个探测每个单元(必要时绕回)以查找出一个空单元。典型的冲突函数 F(i)= i;缺点: 容易产生一次聚集(primary clustering);(2) 平方探测法:典型的冲突函数是:F(i) = i转载 2016-06-01 22:43:29 · 630 阅读 · 0 评论 -
STL系列之九 探索hash_set
http://blog.youkuaiyun.com/morewindows/article/details/7330323Title: STL系列之九 探索hash_setAuthor: MoreWindowsBlog: http://blog.youkuaiyun.com/MoreWindowsE-mail: morewindows@1转载 2016-06-01 22:44:50 · 386 阅读 · 0 评论 -
字符串(一)字符串逆序
http://www.cnblogs.com/graphics/archive/2011/03/09/1977717.html几点说明1. 所有题目全部来自网络,书籍,或者我自己的面试经历,本人只是负责搜集整理。在此对原作者表示感谢!2. 我已经尽力确保文字及程序的正确性,但我毕竟是凡人,如果您发现了文章中的错误,或者有更好的解法,请一定留言相告,以免误导大家!3.转载 2016-06-01 22:47:28 · 525 阅读 · 0 评论 -
字符串的小算法
http://www.nowamagic.net/librarys/veda/detail/286编码实现字符串右移n位,如"diopHeg"右移2位为"egdiopH"思路1:只要把需要移动的最后n个字符保存下来,把前面剩下的全部后移n个位置,最后把开始保存好的n 个字符填充到前面n个位置。注意:n超过字符串长度的情况,所以事前先做n mod 字符串的长度。01int Righ转载 2016-06-01 23:30:26 · 362 阅读 · 0 评论 -
字符串通过hashtable来解决问题
http://blog.chinaunix.net/uid-25434387-id-3527923.html题目: 在字符串中找出第一个只出现一次的字符串,如输入"abaccdeff",输出'b'。思路:由于题目与字符串出现的次数有关,我们可以统计每个字符在该字符串中出现的次数,要到达这个目的,我们需要一个数据容器来存放每个字符的出现次数。在这个数据容器中可以根据转载 2016-06-01 23:31:44 · 724 阅读 · 0 评论 -
C语言常见字符串小算法内容
http://blog.youkuaiyun.com/hkh5730/article/details/14674183写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:"abcd12345e转载 2016-06-01 23:36:20 · 800 阅读 · 0 评论 -
关于数组的几道重要的小算法
http://www.cnblogs.com/graphics/archive/2010/08/24/1761620.html数组是最基本的数据结构,关于数组的面试题也屡见不鲜,本文罗列了一些常见的面试题,仅供参考,如果您有更好的题目或者想法,欢迎留言讨论。目前有以下18道题目,如果有好的题目,随时更新。数组求和求数组的最大值和最小值求数组的最大值和次大值求数组中出现次数超过一转载 2016-06-01 23:37:28 · 765 阅读 · 1 评论 -
数据区间小算法
数据的要求是数据范围是[80-300) (300处是开区间既不包含300) 每当数据超过此范围时将数据从起点加 500 开始下一个数据循环。示例:[80-300)[580-800)[1080-1300)[1580-1800)…..求出1万之内的全部符合条件的数据。//算法处理:#define kRequireNumStartIndex (80)...原创 2018-07-28 10:55:56 · 841 阅读 · 0 评论