- 博客(12)
- 资源 (15)
- 收藏
- 关注
原创 【生活随笔】随笔一
在暑假的上一阶段,我终于完成了算法导论中有关排序算法和树结构的学习及具体的程序实践。回头想想,收获不小,由于我是学通信的,以后可能很少用得到,但是我觉得我学习到的不是算法本身,而是算法的思想。它可能在我日后的科研过程中有着深刻的影响。现在这段时间忙着opnet软件的学习,算法导论中图论的学习可能要暂时搁置了。图论想必在我们通信上应该用的比较多吧,比如什么最短路径问题,最大流问题,最小费用问题等等。
2013-08-15 11:29:55 1572 1
原创 【算法导论】红黑树
红黑树在了解红黑树之前,我们必须先了解二叉搜索树(又称二叉排序树,我在上一篇文章中有介绍),因为红黑树是一种特殊的二叉排序树:在每个节点上增加一个存储位来表示节点的颜色,因此红黑树共有五个域:color,key,lchild,rchild,p。红黑树的提出:一个高度为h的二叉排序树可以实现任何一种基本的动态集合操作:插入、删除、查找等操作,但是当树才高度比较高时,二叉树就会退化成链表。而红
2013-08-09 20:25:53 1682
原创 【算法导论】二叉排序树
二叉排序树二叉排序树的性质:每个节点的左子树中的所有节点的关键字都小于该节点的关键值,而右子树中的所有节点的关键字都大于该节点的关键值。二叉排序树的构造二叉排序树的构造是指将一个给定的数据元素构造为相应的二叉排序树。基本思想为:对于任给的一组数据元素{ R1, R2, …, Rn } , 可按以下方法来构造二叉排序树: (1) 令R1为二叉树的根;
2013-08-09 11:32:47 2422
原创 【算法导论】求二叉树的叶子数和深度
二叉树的叶子数和深度二叉树的遍历算法是许多二叉树运算的算法设计的基础,因此遍历算法的应用很广泛。下面以遍历算法求二叉树的叶子数和深度为例,来加深对于二叉树遍历算法的理解。1. 统计二叉树中的叶子结点数因为叶子结点是二叉树中那些左孩子和右孩子均不存在的结点,所以可在二叉树的遍历过程中,对这种特殊结点进行计数,来完成对叶子结点数的统计。这个统计可在任何一种遍历方式下给出,下面是利用中序遍历
2013-08-06 15:31:48 5092 1
原创 【算法导论】程序出错的解释说明
我在博客的所有程序是在vs2008上运行的,与vc 6.0有点区别,主要是循环体中的循环变量的作用域(vs2008相比vc 6.0更加遵循了C标准),如果程序出错,则主要体现在循环变量的重复定义上。例如:在vs2008或vs2010上,程序为:#includevoid main(){int i=0;for(int i=0;iprintf("%d ",i);}
2013-08-06 15:16:16 3565
原创 【算法导论】二叉树的广度优先遍历
二叉树的广度优先遍历广度优先遍历:又称按层次遍历,也就是先遍历二叉树的第一层节点,然后遍历第二层节点……最后遍历最下层节点。而对每一层的遍历是按照从左至右的方式进行的。基本思想:按照广度优先遍历的方式,上一层中先被访问的节点,它的下层孩子也必然先被访问,因此在算法实现时,需要使用一个队列。在遍历进行之前先把二叉树的根结点的存储地址入队,然后依次从队列中出队结点的存储地址,每出队一个结点的存
2013-08-06 15:01:50 2013
原创 【算法导论】二叉树的深度优先遍历
二叉树的深度优先遍历二叉树的遍历可以分为深度优先遍历和广度优先遍历。本篇介绍深度优先遍历,下一篇介绍广度优先遍历。 根据二叉树的递归定义可知,二叉树是由根结点(D)、左子树(L)和右子树(R)三个基本部分组成。只要能依次遍历这三个基本部分,便可遍历整个二叉树。这三个部分的排列组合为3!=6种,若限定按照先左后右进行遍历,则只有三种遍历方式:DLR(先序)、LDR(中序)、LRD(后序)。
2013-08-06 10:22:39 1509
原创 【算法导论】二叉树的建立
二叉树的建立基本概念: 有序树与无序树:若将树中的每个节点的各个子树都看成是从左到右有次序的,则称该树为有序树,否则为无序数。 顺序存储:从根节点起,自上而下,从左至右的方式对节点进行顺序编号,编号即对应为要存储的数组的下标。于是节点与数组元素就一一对应了。 满二叉树、完全二叉树、非完全二叉树的区别:
2013-08-06 09:58:13 3365
原创 【算法导论】排序算法总结
排序算法总结从六月初开始看算法导论,陆陆续续看了有2个月了,但实际看的时间只有半个月左右。这期间都忙着找导师、期末考试,同时还回家修养了十来天。真正专心的看算法是在离家返校后,由于没有考试和作业的烦恼,天天都沉浸在算法中,感觉效率较高。这段时间学到的东西较多,下面来总结一下:学到的排序算法可以分为两类:比较排序、非比较排序。(这些排序算法的详细介绍及c程序实现在本文末都给出了链接,欢迎参考
2013-08-02 12:15:58 2447 2
原创 【算法导论】桶排序
桶排序时间复杂度为:O(n)基本思想:将要排列的序列分成n组,每组分别进行排序,然后在合并到一起,这里面有分而治之的思想。实例说明:大家学c语言肯定学过switch-case结构,最常见的题型就是对成绩进行分类,但是这里我们是对其进行排名。假设有十个学生的成绩如下:78,17,39,26,72,94,21,12,23,68。我们可以把成绩先进行分段(称为桶),每十分分为一段,共分为10段。
2013-08-02 10:15:54 2570
原创 【算法导论】选择排序法
选择排序法选择排序其实是冒泡法的一种改进,其基本思路也是:先确定最小元素,再找次最小元素,最后确定最大元素。 它与冒泡排序的最大区别在于:冒泡排序是只要碰见比它大的元素就交换,而选择排序是直接将元素放在最终的确定位置,从而避免了多次交换过程。 举例说明:数组a[5]={3,4,2,5,1}.通过一轮比较知1应当放在数组a[0]上。所以我们可以直接将a[0]与a[4]进行交换,从
2013-08-01 21:15:37 1880
原创 【算法导论】冒泡排序法
冒泡排序法时间复杂度:O(n*n)基本思想:从数组最后一个元素开始,依次与前一个元素比较,若比前一个元素小,则与之交换位置,然后再与当前前一个元素比较,直到遇到比它大的元素为止。例如:假设数组为:a[5]={3,4,2,5,1};则运算过程为:首先1与5比较,由于1342513421534125
2013-08-01 21:00:43 2298 2
多种插值算法Matlab实现--数学建模
2015-01-22
数学建模 常用算法matlab实现
2013-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人