算法和数据结构
guzhilei1986
学生正在学习中
展开
-
求最短路径(缔结斯特拉算法)
因为要做一道题牵扯到最小路径的算法,所以就看了看缔结斯特拉算法。看了算法导论上面的介绍不明白,只好下了一个代码自己去看。 //单源图最短路径求法int dijkstra(int from,int to ,int map[][N])...{ int *dis=new int[n];//源到n的距离 int *used=new int[n];//n点是否用过 int i,j,u,max=9原创 2007-11-10 16:38:00 · 1973 阅读 · 1 评论 -
凸包学习笔记(graham_scan)
GRAHAM-SCAN(Q)1 let p0 be the point in Q with the minimum y-coordinate,or the leftmost such point in case of a tie2 let 〈p1, p2, ..., pm〉 be the remaining points in Q,sorted by polar angle in cou原创 2008-04-04 19:44:00 · 1505 阅读 · 1 评论 -
heapsort
#include iostream>#define swap(x,y){int t=0;t=x;x=y;y=t;}int main()...{ int i,a,p,num,heap[101]; scanf("%d",&num); //creat heap; for(i=1;inum;++i) ...{ scanf("%d",&heap[i]);原创 2008-01-09 17:45:00 · 321 阅读 · 0 评论 -
quicksort(快速排序)
/**//*quicksort方法:quicksort在所有同数量级(n*log(n))的排序方法中,其平均性能是最好的.*/#include iostream>using namespace std;int partition(int *a,int left,int right)//这个函数是用来交换和分段用的。...{ int temp=a[left]; while(leftr原创 2007-11-22 21:52:00 · 316 阅读 · 0 评论 -
简单排序(simpleSort)
/**//*简单排序时间复杂度为o(n^2) */#include iostream>using namespace std;void swap(int *a,int *b)...{ int temp; temp=*a; *a=*b; *b=temp;}void SimpleSort(int *item,int num)...{ int i,j; for(i原创 2007-11-22 15:36:00 · 285 阅读 · 0 评论 -
冒泡排序(BubbleSort)
/**//*冒泡排序时间复杂度为o(n^2) 因为移动的次数比较少,所以在数据基本有序的时候用这种方法比较快。 */#include iostream>using namespace std;void swap(int *a,int *b)...{ int temp; temp=*a; *a=*b; *b=temp;}void BubbleSort(int *item,原创 2007-11-22 15:18:00 · 290 阅读 · 0 评论 -
希尔排序(ShellSort)
/**//*shell排序:一定间隔的两个数进行比较排序,间隔不断的缩小,直到间隔为1。*/void ShellSort(int *item,int num)...{ int i,j,temp,k=num; bool flag=true; while(flag) ...{ k=k/2;//通过除2不断的减少间隔数 if(k==1)原创 2007-11-22 14:49:00 · 355 阅读 · 0 评论 -
拓扑排序
拓扑排序(Topological Sort) 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若 ∈E(G),则u在线性序列中出现在v之前。 通常,这样的线性序列称为满足拓扑次序(TopoiSicai Order)的序列,简称拓扑序列。 注意: ①若将图中顶点按拓扑次序排成一行,则图中所原创 2007-11-21 11:58:00 · 508 阅读 · 0 评论 -
任意两点间的最短距离(floyd算法)
Floyd算法给出一个图,求最短路径问题的一个O(n^3)算法 优点:容易理解,可以算出任意两个节点之间最短距离的算法,程序容易写 缺点:复杂度达到三次方,不适合计算大量数据 Floyd算法的功能是通过一个图的权值矩阵求出它的每两点间的最短路径矩阵. 它的功能看上去挺强大的,但它的实现却很简单,和Washall算法很相似,也是一个三层循环,思路也是相似是,就是利用前面计算的结果: 核原创 2007-11-15 14:35:00 · 1645 阅读 · 0 评论 -
归并排序加逆序数
有一种排序叫做归并,它有一个副产物叫逆序数。#include iostream>using namespace std;int sumRvs;void merge(int* A, int p, int q, int r)//p是开头的位置,q中间的位置,r是结束的位置。...{//先另外分配空间, int* L = new int[q - p + 1]; int* R = n原创 2008-04-10 12:12:00 · 619 阅读 · 0 评论