- 博客(9)
- 收藏
- 关注
原创 无权最短路径BFS(广度优先搜索)算法(图论)
广度优先搜索(BFS)算法类似于树中的层次搜索:从任意点s出发,先遍历与s相邻的点,然后再遍历于相邻的点相邻的点。注意有向图必须是顺方向的邻接点。为什么说广度优先搜索可以用来求无权最短路径呢?因为,广度优先搜索每次都会先发现距离s为k的所有顶点,然后才会发现距离s为k+1的所有顶点。 s为起始点。void BFS(Graph& g, Vertex& s) { queue q; for each vertex v in g { v.distance = INFINITY;
2010-10-13 17:06:00 13490
原创 拓扑排序(图论)
<br />拓扑排序是对有向无环图的一种排序。表示了顶点按边的方向出现的先后顺序。如果有环,则无法表示两个顶点的先后顺序。在现实生活中,也会有不少应用例子,比如学校课程布置图,要先修完一些基础课,才可以继续修专业课。一个简单的求拓扑排序的算法:首先要找到任意入度为0的一个顶点,删除它及所有相邻的边,再找入度为0的顶点,以此类推,直到删除所有顶点。顶点的删除顺序即为拓扑排序。 很容易得到拓扑排序的伪代码: void TopSort(Graph g) { for (int i=0
2010-10-12 16:45:00 1528
原创 第一章——引论
计算机硬件介绍:计算机硬件主要包括几个部分:1、处理器2、存储器3、I/O设备4、总线操作系统概念:所有的操作系统都使用某些概念,如进程,存储器以及文件系统等。1、进程:本质上是正在执行的一个程序,与每个进程相关的是进程的地址空间,这是从某个最小值的存储位置到某个值存储位置的列表,进程可以读写这个空间。该地址空间存放有可以执行的程序,程序的数据以及程序的堆栈。另外还有某些寄存器的集合。2、死锁: 当两个或更多进程交互时,它们有时候会进入一种不能解脱的状态,即死锁。3、存储管理:
2010-09-21 00:38:00 564
原创 希尔排序
<br />使用希尔增量的排序例子:<br />使用希尔增量排序额最坏情形时的运行时间为:θ(N2)<br />#include <iostream>typedef int ElementType;void Shellsort(ElementType A[], int N){ int i,j,Increment; ElementType Tmp; for (Increment = N/2; Increment > 0; Increment /= 2) for (i = In
2010-09-07 21:00:00 545
原创 插入排序
<br />插入排序算法:<br />插入排序的一个关键思想是:位置0到位置P-1上的元素是已排过序的。<br />插入排序的时间复杂度为:O(N2)。<br />#include <iostream>typedef int ElementType;void InsetionSort(ElementType A[], int N){ int j,P; ElementType Tmp; for (P = 1; P < N; P++) { Tmp = A[P]; fo
2010-09-07 20:46:00 512
原创 快速排序
//快速排序算法#include #include #include using namespace std;//快速排序int Partition(int num[],int i,int j) //调用Partition(num,low,high)时,对num[low...high]做划分,并返回基准记录的位置 { int pivot=num[i]; //用区间的第1个记录作为基准 while(i=pivot) //pivot相
2010-09-07 17:13:00 836
原创 归并排序
/* * main.cpp * * Created on: 2010-9-7 * Author: yangyu *///归并排序#include #include using namespace std;// 归并排序中的合并算法void Merge(int a[], int left, int center, int len){ int *t = (int *) malloc((len-left+1) * sizeof(int)); //申请
2010-09-07 17:09:00 534
原创 堆排序
堆排序/* * main.c * * Created on: 2010-9-7 * Author: yangyu */#include #define LeftChild(i) ( 2 * (i) + 1)void Swap(int *a, int *b) //按地址传送交换 pass-by-reference{ int temp; temp = *a; *a = *b; *b = temp;}void PercDown(int A[]
2010-09-07 14:57:00 499
转载 非递归dfs算法
<br />都说现今内存不值钱了,哈,也就不考虑空间复杂度的问题了,弄了俩辅助数组,觉得解这题还是挺容易的,就是不知道有没有BUG。<br />问题描述:<br />假设图G采用邻接表存储,编写一个实现连通图G的深度优先遍历(从顶点v出发)的非递归算法。<br />算法思路:<br />就是深度优先的思路。同样是一个visited[]数组,标记已访问过的顶点。又用了一个_vertex[]数组,用于存放顶点。<br />算法实现:<br />#include <stdio.h><br />#inclu
2010-09-05 21:51:00 1049
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人