数据结构与算法
u011252685
这个作者很懒,什么都没留下…
展开
-
汉诺塔 递归与非递归实现 (2)
汉诺塔(又称河内塔)问题其实是印度的一个古老的传说。开天辟地的神勃拉玛(和中国的盘古差不多的神吧)在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。计算结果非常恐怖(移动圆片的次数)18446744073709转载 2015-04-18 18:32:01 · 423 阅读 · 0 评论 -
时间复杂度和空间复杂度 1
算法的时间复杂度和空间复杂度合称为算法的复杂度。 1.时间杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句转载 2015-04-19 22:33:26 · 1002 阅读 · 0 评论 -
时间复杂度和空间复杂度 2
算法的时间复杂度和空间复杂度 常用的算法的时间复杂度和空间复杂度 排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 快速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n)转载 2015-04-19 22:37:04 · 440 阅读 · 0 评论 -
时间复杂度和空间复杂度 3
1.空间复杂度 算法中包含原操作次数的多少叫做算法的时间复杂度,用它来衡量一个算法的运行时间性能。 如果存在两个正常数c和n0,对于所有的 n>=n0,有| f(n) | f(n) 是 T(n) 的同数量级函数。把 T(n) 表示成数量级的形式为:T(n)=O(f(n))。称O(f(n)) 为算法的渐近时间复杂度,简称时间复杂度。 有时候,算法中基本操作重复执行的次数还转载 2015-04-19 22:39:23 · 318 阅读 · 0 评论 -
KMP字符串模式匹配详解
KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。 一.简单匹配算法 先来看一个简单匹配算法的函数: int Index_BF ( char S [ ], char T [ ], int pos ) { /* 若串 S 中从第pos(S转载 2015-04-18 18:34:06 · 297 阅读 · 0 评论 -
汉诺塔 递归与非递归实现 (1)
汉诺塔问题:如果将n个盘子(由小到大)从a通过b,搬到c,搬运过程中不能出现小盘子在大盘子下面的情况。 分析:这个一个递归问题。只要将n-1个盘子从a通过c(没有中间点肯定不行)搬到b,再将第n个盘子从a搬到c,最后将n-1个盘子从b通过a搬到c。 代码: 一.递归算法b2_hannoi.cpp #include//汉诺塔 #include #include转载 2015-04-18 18:27:13 · 1631 阅读 · 0 评论 -
排序算法
排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分转载 2015-04-18 21:42:41 · 338 阅读 · 0 评论 -
列空间和零空间
特别关注矩阵的列空间和零空间 回忆什么是向量空间:就是一些向量,对一些运算封闭,空间内任何向量相加(加法),结果仍在空间内,或用空间内任意向量乘以常数(数乘),结果仍在空间内,即加法和数乘都是封闭的,那么线性组合必然也是封闭的。一种更简单的描述方法:所有线性组合,即任意倍的向量v与任意倍的向量w之和,仍在空间中。向量空间必包含原点。 什么是子空间:向量空间内的一些向量,它们转载 2015-07-07 16:30:55 · 1206 阅读 · 0 评论