
算法
文章平均质量分 83
liangbch
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排序算法从入门到精通之八--堆排序
本文给出堆排序算法描述和代码原创 2022-02-06 15:26:43 · 249 阅读 · 0 评论 -
Spigot 算法之一 计算调和级数的和
我是首先在[1] 注意到 Spigot-Algorithm的,这个算法发布的相当早,见[2]. [1] 给出几个令人惊异的程序,只用很少的代码就可以计算e,pi,log(2)等常数。其中那个4行代码计算圆周率的程序被网友称作外星人写的程序,但我一直没有勇气去分析和学习它,最近终于决定学习这个 Spigot-Algorithm,先看了文献【3】,明白了其基本思想,遂计划尝试编写各种计...原创 2015-07-04 10:00:22 · 5202 阅读 · 0 评论 -
整数平方根的计算(一)
摘要:本文主要讨论使用求级数和的方法来计算小整数的平方根,在内存空间允许的情况下,本算法可将整数的平方根精确到任意精度。本算法具有逻辑简单,且无需使用大数库等优点。另外,本算法也相对高效,在当前主流的计算机上,计算整数的平方根到到10万位有效数字并输出到文件,大约需要5秒左右的时间。本文不但给出算法描述,也给出完整的C语言代码,其代码在VC和GCC下编译通过。 为了描述其算法原理原创 2012-02-16 04:34:45 · 10958 阅读 · 1 评论 -
二叉树的某些函数的实现
本文给出二叉树操作中某些功能的一个实现,个别函数用到STL的stack。本文包含的功能有 1. 二叉树的前序遍历,递归形式。BinaryTree_preorderTraversal 2. 二叉树的前序遍历,非递归形式,要用到stack。函数名BinaryTree_preorderTraversalUseStack 3. 求二叉树的高度。函数名BinaryTree_height 4....原创 2018-02-13 23:03:12 · 391 阅读 · 0 评论 -
STL应用-使用后缀表达式求表达式的值
1.关于中缀表达式和后缀表达式 我们常见的表达式是中缀表达式形式,即二元运算符在两个操作数的中间,如“3+4*5” 而后缀表达式则是运算符位于两个操作数之后。 如“3+4*5”转化为后缀表达式为“3 4 5 * +”2.基本思路 1.我们首先将中缀表达式转化为后缀表达式 2.对后缀表达式求值3.具体实现 3.1 将中缀表达式转化为后缀表达式 3.1.1 数据结构: ...原创 2018-02-13 16:06:30 · 617 阅读 · 0 评论 -
排序算法从入门到精通之二---冒泡排序
冒泡排序是最朴素的排序算法。其过程就像烧水过程一样,大的水泡从壶底一步一步冒出来,直到水面以上。其基本思想是 1. 扫描整个数组,若数组长度为n,第一趟扫描过程中,下标j从0到n-2, 依次比较arr[j] 与 arr[j+1] ,若前者大于后者交换这两个元素。2. 第一趟扫描完成后,最大的那个元素已经放到数组末尾,所有最后的那个元素已经就位。所以第2次扫描时,只需考虑前n-1个元素,故下标j 从...原创 2018-04-13 17:11:11 · 225 阅读 · 0 评论 -
排序算法从入门到精通之三--选择排序
这个算法的复杂度和冒泡排序相同,相对于冒泡排序,这个算法减少了交换次数。算法描述:1.这个算法将待排序的数组分成左右2部分,左部分已经排好的,右部分是尚未排好的。左部分中,其最大的元素(最末的元素)总是小于等于右部分的任意一个元素。一开始,左部分为空,右部分是整个数组,随着排序的继续进行,左部分增加扩大,右部分逐渐减小,直到右部分为空为止。2. 每趟扫描过程中,检查右部分的所有元素,并找出最小的那...原创 2018-04-13 17:32:37 · 233 阅读 · 0 评论 -
排序算法从入门到精通之四--插入排序
插入排序和选择排序的复杂度相同,当数据基本有序或者数组的规模比较小时,这个排序算法的效果最好,故可用作其他排序的子过程,如快速排序,归并排序。原创 2018-04-13 17:52:01 · 317 阅读 · 0 评论 -
排序算法从入门到精通之五--希尔排序
希尔排序(Shell's Sort)是插入排序的一种,又称“缩小增量排序”。原创 2018-04-13 18:32:49 · 290 阅读 · 0 评论 -
排序算法从入门到精通之八--堆排序
编辑重了,不知怎么删除,请参阅排序算法从入门到精通之八--堆排序_liangbch的专栏-优快云博客排序算法从入门到精通之九--性能测试原创 2018-04-14 22:54:02 · 282 阅读 · 0 评论 -
排序算法从入门到精通之九--性能测试
该文对几种较快的排序算法做了性能测试。测试的算法包括希尔排序,归并排序和快速排序。由于冒泡排序,插入排序,选择排序速度较慢,我们这里没有给出数据。所有几种算法在同一个程序中运行,使用同样的数据。通过修改宏MAX_LEN的值,我们对数据规模为1百万,2百万和4百万分别做的测试。 我们做了2轮测试,第一轮测试中,归并排序中调用merge_v1, 第二轮测试中归并排序调用merge_v2_asm. 下面...原创 2018-04-14 23:28:39 · 524 阅读 · 0 评论 -
排序算法从入门到精通之六--快速排序
快速排序的算法是一种分而治之的算法,是一个递归算法。在通常情况下,快速排序算法是已知的最快的算法,故称这个算法为快速排序。其方法是:1.首先找出一个枢轴元素base。2.扫描待排序的数组,将这个数组划分为2部分,使左部分的所有元素小于等于base,右部分的所有元素大于base。3.对左部分的子数组继续做这个操作。4.对右部分的子数组做同样的操作。5.继续递归下去,直到数组的长度小于为1。原创 2018-04-14 10:42:07 · 479 阅读 · 0 评论 -
排序算法从入门到精通之七--归并排序
这篇文章讲述了归并排序的算法并给出一个优化的实现。通常,快速排序被认为是最快的算法,但是从算法性能这个方面讲,归并排序是快速排序的有力竞争者,他甚至比快速排序更快。快速排序的缺点是性能不稳定,特定的数据分布会导致排序性能变差。而归并排序是稳定的排序,其性能和数据的分布无关。归并排序的缺点是需要的内存空间比较大。原创 2018-04-14 22:27:55 · 1029 阅读 · 0 评论 -
4行代码计算圆周率,e,2的平方根,log(2)
在 http://numbers.computation.free.fr/Constants 中看到几个特别的程序,仅仅3-4行代码,却可以将圆周率,e(自然对数的底),log(2), 2的平方根 计算到数千位。这里将他们贴出来,方便大家学习。转载 2008-11-05 23:43:00 · 4379 阅读 · 3 评论 -
用C语言和汇编语言实现将1个整数分解成几个素数的乘积
本文中的程序功能是将1个整数分解成几个素数的乘积,并提供了C语言和32位X86汇编语言2个不同的版本。本文尽量给出一个较好的实现,希望对c语言学习者和汇编语言学习者带来帮助。原创 2012-06-13 23:08:18 · 19539 阅读 · 2 评论 -
整数平方根的计算(二)
摘要: 本文给出了另一个计算整数平方根的程序,和整数平方根的计算(一)不同,他主要使用牛顿法来求平方根,大整数运算调用GMP整数运算库。全部的代码能够从http://download.youkuaiyun.com/download/liangbch/4070516 下载。 算法: 这个程序的主要算法是牛顿迭代法。他首先得到一个平方根的初始值,然后使用牛顿迭代法逐步求精,在计算过程原创 2012-03-09 13:38:30 · 2153 阅读 · 0 评论 -
打印整数的所有分解式
这个题目的要求是:将一个大于1的整数写成几个整数乘积的形式,因为任意数和1相乘,其乘积不变,故要求分解后的数不能为1。题目要求所有的排列形式,所以12=3×4和12=4×3应该视为是两个不同的分解式,都应当输出。例如:对于整数n=36,其所有的分解式是36=3636=2*1836=18*236=3*1236=12*336=4*936=9*436=6*636=2*原创 2012-05-30 14:32:04 · 2283 阅读 · 2 评论 -
整数拆分问题
问题: 对于1个正整数N,将其拆分成几个正整数的和,如何拆分可使得其乘积最大?csdn用户pathuang68给出的结论是:如果不在乎是否为整数的话,那么把每份平均分为e(2.71828459045...)时,所得到的乘积是最大的,如果要是整数的话,那么就选尽可能地靠近e的整数即可,比如3。具体证明请参见 http://blog.youkuaiyun.com/pathuang68/art原创 2012-05-30 16:32:41 · 4121 阅读 · 0 评论 -
一个走迷宫的程序
本文给出一个c语言版的走迷宫的程序。迷宫的宽和高,迷宫矩阵,迷宫的入口和出口从文件读入。程序首先读入迷宫数据,然后显示迷宫矩阵,最后调用迷宫搜索程序找到一个路径,并输出。1. 迷宫的表示。迷宫用结构体MATRIX来表示包括迷宫矩阵迷宫的宽,迷宫的高,迷宫入口的坐标,迷宫出口的坐标。结构体定义如下:typedef struct _step{int x;原创 2012-05-22 01:02:37 · 15152 阅读 · 6 评论 -
一个求迷宫入口到出口最近距离的程序
本文给出一个c/c++语言版的求迷宫入口到出口的最短路径的程序。程序的大部分使用标准c语言编写,包括输入和输出。唯一用到C++库的地方是使用STL了中的deque。迷宫的宽和高,迷宫矩阵,迷宫的入口和出口等数据从文件读入。程序首先读入迷宫数据,然后更新迷宫矩阵,并求出迷宫入口和出口之间的最短路径,并输出最短路径长度。1. 迷宫的表示。迷宫用结构体MATRIX来表示包括迷原创 2012-05-23 16:28:21 · 6329 阅读 · 1 评论 -
算法学习和ACM训练方案
1. POJ 推荐50题1.1 第一类 动态规划(至少6题,2479 和 2593 必做) 2479 和 259310151042(可贪心) 114110501080122112602411(稍难) 12761.2 第二类 搜索(至少4题)1011103311292049205624882492(稍难,也可并查集)转载 2013-09-16 14:57:58 · 6506 阅读 · 0 评论 -
使用回溯法求所有从n个元素中取m个元素的组合
一个使用回溯法求n个元素中去m个元素的c语言代码,包括2个版本,递归版和迭代版,前者代码简洁,后者性能更好些。原创 2013-09-13 13:55:56 · 9076 阅读 · 2 评论 -
转化逆波兰式为常规表达式
转化逆波兰式为常规表达式原创 2013-09-25 00:11:23 · 2497 阅读 · 0 评论 -
公比为无理数的等比数列的近似表示
在工程上,经常能够看到公比为无理数的等比数列。无理数是不可以表示为p/q的形式(这里p和q都是正整数)。但是,在某些情况下,并不严格要求相邻2项的比绝对相等,只要近似相等就可以了,这是给出用有理数来拟合这个数列的例子。原创 2014-03-26 01:47:21 · 1911 阅读 · 0 评论 -
批量分解素因数(一)
这个程序采用高效的算法,将n以内的所有自然数分解质因数,并存储起来,最后输出其分解式。原创 2016-07-24 22:58:53 · 1781 阅读 · 0 评论 -
批量分解素因数(二)
本文中的程序使用压缩的格式存储M以内(包含M)的所有奇数的分解式,本程序侧重于使用尽可能少的内存空间来保存M以内的所有奇数的分解式。原创 2016-07-26 10:06:45 · 839 阅读 · 0 评论 -
用32位汇编语言写的一个简单的表达式计算器
本文给出一个简单的表达式计算器32位汇编源程序,并给出对应的C语言代码,有助于理解汇编和C语言编程的异同。原创 2012-06-14 01:29:24 · 6428 阅读 · 0 评论