2011年5月20日
摘要:
qsort和sort的区别First qsort基本快速排序的方法,每次把数组分成两分和中间的一个划分值,而对于有多个重复值的数组来说,基本排序的效率较低。集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决这个问题。所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分。函数对buf 指向的数据按升序排序。使用方法:void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )int compare (const void *elem1, const void *elem2 阅读全文
posted @ 2011-05-20 22:05
枫叶飘泪
阅读(14405)
评论(0)
推荐(0)
摘要:
1.dijkstra()算的是某个固定点到任意两点的最短路,而floyed()则是计算图中任意两点之间的最短路。2.floyed()算法算的最大数组可开至100左右,而dijkstra()可以更大。 阅读全文
posted @ 2011-05-20 21:46
枫叶飘泪
阅读(369)
评论(0)
推荐(0)
摘要:
#include<stdio.h>#include<string.h>#include<stdlib.h>int n,m,set[1000];int find(int x)//查找根节点{ return set[x]==x?x:set[x]=find(set[x]);//递归}void Union(int x,int y)//合并不相等根节点的两个集合{ int a=find(x),b=find(y); if(a!=b) set[a]=b;}int main(){ int a,b,x,y,sum; while(scanf("%d%d",& 阅读全文
posted @ 2011-05-20 21:09
枫叶飘泪
阅读(278)
评论(0)
推荐(0)
摘要:
#include<stdio.h>#include<string.h>#include<stdlib.h>int n,m,map[124][124];const int inf=0x7fffffff;void floyed(){ for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) for(int k=1;k<=n;k++) if(map[i][j]!=inf&&map[i][k]!=inf) if(map[i][j]+map[i][k]<map[j][k]) map[j][k]=ma 阅读全文
posted @ 2011-05-20 19:36
枫叶飘泪
阅读(227)
评论(0)
推荐(0)
摘要:
#include<stdio.h>#include<stdlib.h>#include<string.h>int n,m,hash[1010],dis[1010],map[1010][1010];const int inf=0x7fffffff;void dijstra(){ dis[1]=0; for(int i=1;i<=n;i++) { int t=inf,pos; for(int j=1;j<=n;j++)//找出当前未标记的最小顶点 { if(hash[j]==0) { if(dis[j]<t) { t=dis[j]; pos=j 阅读全文
posted @ 2011-05-20 19:30
枫叶飘泪
阅读(329)
评论(4)
推荐(1)