最短路之~迪科斯彻算法
迪科斯彻算法是由荷兰计算机科学家艾滋郝尔·戴克斯拉提出的。本算法使用广度优先搜索解决非负权有向图的单源最短路径问题,算法最终得到一个最短路径树。此算法常用于路由算法或者作为其他图算法一个子模块,本算法是用来找一个点到其他所有点之间的最短路径。
此算法中变量的使用:
map[][]二维数组记录两点之间的权值...
分类:
编程语言 时间:
2015-08-18 10:17:36
阅读次数:
176
八大排序算法的稳定性及复杂度总结如下:选择排序算法准则每种排序算法都各有优缺点。因此,在实用时需根据不同情况适当选用,甚至可以将多种方法结合起来使用。影响排序的因素有很多,平均时间复杂度低的算法并不一定就是最优的。相反,有时平均时间复杂度高的算法可能更适合某些特殊情况。同时,选择算法时还得考虑它的可读性,以利于软件的维护。一般而言,需要考虑的因素有以下四点: 1.待排序的记录数目n的大小;2.记录...
分类:
编程语言 时间:
2015-08-18 09:07:49
阅读次数:
210
排序:对一序列对象根据某个关键字进行排序;
稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;
例如:插入排序、冒泡排序、归并排序、计数排序、基数排序、桶排序
不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;
例如:选择排序(5 8 5 2 9)、快速排序、堆排序
内排序:不占用额外内...
分类:
编程语言 时间:
2015-08-16 23:12:27
阅读次数:
172
在数学与计算机科学中,递归是指在函数的定义中使用函数自身的方法。递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。递归算法解决问题的特点:(1)递归就是在过程或函数里调..
分类:
编程语言 时间:
2015-08-14 19:29:23
阅读次数:
220
二叉树,结构很简单,只是比单链表复杂了那么一丢丢而已。我们先来看看它们结点上的差异:/* 单链表的结构 */struct SingleList{ int element; struct SingleList *next;};/* 二叉树的结构 */struct BinaryTree{...
分类:
编程语言 时间:
2015-08-14 13:40:21
阅读次数:
160
各位看官们,大家好,上一回中咱们说的是巧用溢出计算最值的例子,这一回咱们说的例子是:测试程序
运行时间。闲话休提,言归正转。让我们一起talk C栗子吧!
看官们,在编写程序的时候,可能需要计算程序运行的时间。通过计算时间,可以查看程序的性能。其实
我们在第三十一回中对各种常用排序算法总结时也使用过这种方法,不过当时使用的是Linux提供的time
命令。如果大家忘记了第三...
分类:
编程语言 时间:
2015-08-13 22:25:10
阅读次数:
224
一:前言二叉树的遍历方法分四种:前序,中序,后序以及层次遍历。其中,前中后遍历方法的实现分递归和非递归,非递归遍历的实现需要借助于栈。实际上,递归的调用就是一种栈的实现,所以,非递归遍历就需要人工借助栈结构来实现。而层次遍历需要借助队列。二:前中后序遍历递归遍历:递归遍历的思想和方法很简单,通过调整...
分类:
编程语言 时间:
2015-08-11 00:03:14
阅读次数:
232
1.冒泡排序要说冒泡应该是非常简单的一种排序了,思路就如其名,数据像是泡泡一样逐个上升。/* * 冒泡排序 */void bubbleSort(int *array , int length){ //设置flag来标示是否已经有序,用于优化冒泡排序 int flag; //共执行n...
分类:
编程语言 时间:
2015-08-10 23:39:48
阅读次数:
221
各位看官们,大家好,上一回中咱们说的是快速排序的例子,这一回咱们不说例子了,咱们把前面说过的
排序进行总结。闲话休提,言归正转。让我们一起talk C栗子吧!
看官们,我们在前几回说了常用的各种排序算法,它们各有各的特点,我在这里做统一的总结:
容易理解的排序算法是冒泡排序,而且也容易实现,只是性能相对低一些。最难理解的是快速排序,但是
它的性能是最好的。插入排序和...
分类:
编程语言 时间:
2015-08-04 23:06:05
阅读次数:
174