摘要:
什么是Mandelbrot集合? Mandelbrot集合是在复数平面上组成分形的点的集合,它正是以数学家Mandelbrot命名。 Mandelbrot集合可以用复二次多项式 $$ f_c(z)=z^2+c $$ 来定义 其中c是一个复数。对于每一个c,从$z = 0$,开始对$f_c(z)$进行 阅读全文
摘要:
问题定义: 存在多个半径相同的圆,和一个半径不同的圆,如何判断半径不同的圆完全在一群圆内。下图演示了几种情况,左边是完全在圆内,右边不是。 解决方法之一: 对于红圆在某个黑圆之内或者在所有黑圆之外等的特例情形,可以用简单的圆圆之间的几何判断算法得到结果,对于其余部分相交的一般情形,如果同时满足以下两 阅读全文
摘要:
转自http://net.pku.edu.cn/~yhf/UsingSTL.htm 译者:kary contact:karymay@163.net STL概述 STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是 阅读全文
摘要:
转自:http://blog.chinaunix.net/space.php?uid=22889411&do=blog&id=59667 曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复杂的C/C+ 阅读全文
摘要:
题目:有1,2,3,..n 的无序整数数组,求排序算法。要求时间复杂度 O(n), 空间复杂度O(1)。 分析:对于一般数组的排序显然 O(n) 是无法完成的。 既然题目这样要求,肯定原先的数组有一定的规律,让人们去寻找一种机会。 例如:原始数组: a = [ 10, 6,9, 5,2, 8,4,7 阅读全文
摘要:
介绍 归并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的,然后再把有序子序列合并为整体有序序列。 过程 第一步:申请空间,使之大小为两个已经排序序列之和,该空间用来存放合并后的序列; 第二步:设定两个指针,最初位置为两个已经排序序列的起始位 阅读全文
摘要:
介绍 先将整个待排序的记录序列分割成若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。 过程 先将要排序的一组记录按某个增量d(n/2,n为要排序数的个数)分为若干组子序列,每组中记录的下标相差d。对每组中全部元素进行直接插入排序; 然后再用一个较小 阅读全文
摘要:
介绍 通过一趟排序将要排序的数据分割为独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行,以此达到整个数据变成有序序列。 过程 1.设置两个变量i、j,排序开始时:i=0,j=n-1; 2.以第一个数组元素作为关键 阅读全文
摘要:
介绍 它重复的走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行,直到没有再需要交换,也就是说该数列已经排列完成。 过程(大的数据沉到最右边) 1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2.对每一对相邻元素作同样的工作,从开始第一对 阅读全文
摘要:
介绍 每次从无序表中取出第一个元素,把它插入到有序表中的合适位置,使有序表仍然有序。 过程 第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前面两个数从后向前比较,插入到合适的位置; 依次进行下去,进行了n-1趟扫描后就完成了整个排序过程。 代码: 效果: 算法分析: 阅读全文