华中科技大学:《计算机算法基础》 算法程序设计

计算机学院0101班吴晴 学号200101183000 算法程序设计 一,比较归弄分奏和快速分类算油 思想:结合课本中的算法结构,分别计算在数据集相同且分别为随机 数,非降序,非增序情况下两种算法所需的时间.数据集为10000 dio. h> #include #include #include #includeslimits. h> #define mAX 1000000 工作数据集为100000 int A[MAX+21 ∥多出的两个为0号和最后一个无穷大 int B[MAX+2] B和C保证排序使用的数据集相同,若作为局部变量会造成 int C[MAX+2 ∥存溢出 void mERGESORT(int low, int high) /归并排序 i int mid if(lowmid)for(k-j, k<=high k++)B0=A(k]; 1++ else for(k=h k<=mid; k++)B=Ak i++;) for(k=low; k<=high; k++)A[k]=B(kI return void QUICKSORT(int m, int p) ∥快速排序将两个函数合为一个 int v, i, k, temp
计算机学院 0101 班 吴晴 学号:2001011830002 1/5 算法程序设计 一,比较归并分类和快速分类算法 思想:结合课本中的算法结构,分别计算在数据集相同且分别为随机 数,非降序,非增序情况下两种算法所需的时间.数据集为 1000000. #include #include #include #include #include #include #define MAX 1000000 //工作数据集为 1000000 int A[MAX+2]; //多出的两个为 0 号和最后一个无穷大 int B[MAX+2]; //B和C保证排序使用的数据集相同,若作为局部变量会造成 int C[MAX+2]; //内存溢出 void MERGESORT(int low,int high) //归并排序 { int mid; if(lowmid) for(k=j;k<=high;k++) {B[i]=A[k];i++;} else for(k=h;k<=mid;k++) {B[i]=A[k];i++;} for(k=low;k<=high;k++) A[k]=B[k]; return; } void QUICKSORT(int m,int p) //快速排序,将两个函数合为一个 { int v,j,k,temp;

计算机学院0101班吴晴 学号200101183000 V=Am]; k=p+1 if(v) if(tm hour. ml=newtime->tm min sI=newtime->tm sec ftime( &timebuffer tl=timebuffer. millitm process(x,y); time( &long time newtime =localtime( &long time ) ∥到结束时的时间 h2=newtime->tm hour: s2=newtime->tm sec ftime( &timebuffer t2=timebuffer. millitm. temp=24*60*1000*(h2-hl)+60000(m2-m1)+1000(52-s1)+12t1;/求时间差,即运行时间 printf("It\t%.5d ms", temp) t int i AMAX+1=INT MAX
计算机学院 0101 班 吴晴 学号:2001011830002 2/5 v=A[m]; j=m; k=p+1; if(jv); if(jtm_hour; m1=newtime->tm_min; s1=newtime->tm_sec; _ftime( &timebuffer ); t1=timebuffer.millitm; process(x,y); time( &long_time ); newtime = localtime( &long_time ); //得到结束时的时间 h2=newtime->tm_hour; m2=newtime->tm_min; s2=newtime->tm_sec; _ftime( &timebuffer ); t2=timebuffer.millitm; temp=24*60*1000*(h2-h1)+60000*(m2-m1)+1000*(s2-s1)+t2-t1;//求时间差,即运行时间 printf("\t\t%5d ms",temp); } void main() { int i; A[MAX+1]=INT_MAX;

计算机学院0101班吴晴 学号200101183000 printf("ItItMERGESORTttQUiCKsoRT\n"); printf("Rand: " ∥随机时的比较 for(il; #includesfloat. h> #define n6 #define mAX Flt max float DIST[N+1 float COSTIN+lIN+1}={{-1,-1,-1,-1,-1,-1,-1} i-1, 0, 20, 15, MAX, MAX, MAX;
计算机学院 0101 班 吴晴 学号:2001011830002 3/5 printf("\t\tMERGESORT\t\tQUICKSORT\n"); printf("Rand:"); //随机时的比较 for(i=1;i #include #include #define N 6 #define MAX FLT_MAX float DIST[N+1]; float COST[N+1][N+1]={ {-1,-1, -1, -1, -1, -1, -1}, {-1,0, 20, 15, MAX,MAX,MAX}

计算机学院0101班吴晴 学号200101183000 -1,2,0,MAX,MAx,10,30} i-1, MAX, 4, 0, MAX, MAX, 10) F-1, MAX, MAX, MAX, 0, MAX, MAX; i-1, MAX, MAX, MAX, 15, 0, MAX) F-1, MAX, MAX, MAX, 4, 10, 0) int PATHN+lI )于存放到目的结点最短路径上最后一个点的位置 int STACKINI ∥利用PAIH函数通过栈操作来求出最短路径序列 bool S[N+l ∥判断改结点是否已进行比较 void SHORTEST PATHS(inty)∥/生成最短路径的贪心算法 t int i, num, u; for(i1; KDisTu+CoSTu) i DIST[=DIST[u+COSTu][] PATHI=u; int finding ∥找找周围路径最短的结点 float temp=MAX; for(i1; K<=N; i++) if(s[=0) if(DIST[]<temp & dist[!=0) i temp=DIST( eturn() int path (int v, int 1) ∥通过栈反序查找 if(PATHSTACKi-1=v) t STACK[G=PATHSTACKi-1ll
计算机学院 0101 班 吴晴 学号:2001011830002 4/5 {-1,2, 0, MAX,MAX,10, 30}, {-1,MAX,4, 0, MAX,MAX,10}, {-1,MAX,MAX,MAX,0, MAX,MAX}, {-1,MAX,MAX,MAX,15, 0, MAX}, {-1,MAX,MAX,MAX,4, 10, 0}}; int PATH[N+1]; //用于存放到目的结点最短路径上最后一个点的位置 int STACK[N]; //利用PATH函数通过栈操作来求出最短路径序列 bool S[N+1]; //判断改结点是否已进行比较 void SHORTEST_PATHS(int v) //生成最短路径的贪心算法 { int i,num,u; for(i=1;i DIST[u]+COST[u][i]) { DIST[i]=DIST[u]+COST[u][i]; PATH[i]=u; } } } int findmin() //找找周围路径最短的结点 { int i,j; float temp=MAX; for(i=1;i<=N;i++) { if(S[i]==0) if(DIST[i]<temp && DIST[i]!=0) { temp=DIST[i]; j=i; } } return(j); } int path(int v,int i) //通过栈反序查找 { int s=1; if(PATH[STACK[i-1]]!=v) { STACK[i]=PATH[STACK[i-1]];

计算机学院0101班吴晴 学号200101183000 s+=path(v, i+1) return s id main( void) printf("input the number: " scanf("%d", &m) SHORTEST PATHS(m) for(i1; K=1;j-) printf("-%d"STACK[-1); printf("It\distance: %3.Of ", DIST[) getch(; 运行结果: input the number: 2 from 2 to 1: 2-1 distance. 2 from 2 to 3: 2-1-3 distance: 17 from 2 to 4: 2-5-4 distance: 25 from 2 to 5: 2-5 distance: 10 from 2 to 6: 2-1-3-6 distance: 27 编程分析 算法思想:确定到目的结点最短路径上最后一个点的位置依次反序进栈出栈时正好就 是最短路径序列了 这种方法是把求最短长度和求序列两部分分开进行问哪个才求哪个,而使用二维数组的 方法则是把问题结合在一起进行,全部一起求完
计算机学院 0101 班 吴晴 学号:2001011830002 5/5 s+=path(v,i+1); } return s; } void main(void) { int i,j,m; printf("input the number:"); scanf("%d",&m); SHORTEST_PATHS(m); for(i=1;i=1;j--) printf("-%d",STACK[j-1]); printf("\t\tdistance:%3.0f ",DIST[i]); } } getch(); } 运行结果: input the number:2 from 2 to 1:2-1 distance: 2 from 2 to 3:2-1-3 distance: 17 from 2 to 4:2-5-4 distance: 25 from 2 to 5:2-5 distance: 10 from 2 to 6:2-1-3-6 distance: 27 编程分析: 算法思想: 确定到目的结点最短路径上最后一个点的位置,依次反序进栈,出栈时正好就 是最短路径序列了. 这种方法是把求最短长度和求序列两部分分开进行,问哪个才求哪个,而使用二维数组的 方法则是把问题结合在一起进行,全部一起求完
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 华中科技大学:《计算机算法基础》 第二章 分治法(Divide and Conquer)——“分”而治之.ppt
- 华中科技大学:《计算机算法基础》第一章 导引与基本数据结构(王多强).ppt
- 《微机常用外设》 第三章 非击打式印刷机.ppt
- 《微机常用外设》 第一章 输入技术及设备.ppt
- 《微机常用外设》 绪论.ppt
- 《微机常用外设》 第四章 数字磁记录原理.ppt
- 《微机常用外设》 第五章 外存储技术及设备.ppt
- 《微机常用外设》 第二章 击打式打印机.ppt
- 《网络综合布线技术》 第九章 常用布线系统介绍.ppt
- 《网络综合布线技术》 第八章 综合布线质量控制.ppt
- 《网络综合布线技术》 第七章 综合布线系统的验收.ppt
- 《网络综合布线技术》 第六章 综合布线系统的测试.ppt
- 《网络综合布线技术》 第五章 综合布线工程施工.ppt
- 《网络综合布线技术》 第三章 综合布线系统工程设计.ppt
- 《网络综合布线技术》 第三章 网络传输介质.ppt
- 《网络综合布线技术》 第二章 综合布线标准.ppt
- 《网络综合布线技术》 第一章 综合布线系统概述.ppt
- 浙江大学:《计算机图形学》 第十章 真实感图形绘制.ppt
- 浙江大学:《计算机图形学》 第九章 消隐.ppt
- 浙江大学:《计算机图形学》 第八章 三维形体的表示.ppt
- 华中科技大学:《计算机算法基础》 CHAPTER 10 Aggregate Demand I.ppt
- 华中科技大学:《计算机算法基础》 CHAPTER 11 Aggregate Demand l.ppt
- 华中科技大学:《计算机算法基础》 习题3.1.doc
- 华中科技大学:《计算机算法基础》 第一章 习题.ppt
- 华中科技大学:《计算机算法基础》 复习要点.ppt
- 华中科技大学:《计算机算法基础》 第三章 贪心方法.ppt
- 华中科技大学:《计算机算法基础》 第四章 动态规划.ppt
- 乐山师范学院:《计算机程序设计》 电子课件.ppt
- 兰州工业学院:《计算机网络与通信 Computer Network & Communication》课程教学资源(PPT课件讲稿)第一章 计算机网络概述 Introduction of Computer Network.ppt
- 兰州工业学院:《计算机网络与通信 Computer Network & Communication》课程教学资源(PPT课件讲稿)第二章 数据通信技术 Data Communication Basics.ppt
- 兰州工业学院:《计算机网络与通信 Computer Network & Communication》课程教学资源(PPT课件讲稿)第三章 计算机网络体系结构 Architecture of Computer Network.ppt
- 兰州工业学院:《计算机网络与通信 Computer Network & Communication》课程教学资源(PPT课件讲稿)第四章 局域网技术 Local Area Network Technology.ppt
- 兰州工业学院:《计算机网络与通信 Computer Network & Communication》课程教学资源(PPT课件讲稿)第五章 Repeaters(中继器)Network Devices & Interconnection.ppt
- 兰州工业学院:《计算机网络与通信 Computer Network & Communication》课程教学资源(PPT课件讲稿)第六章 网络技术及组网技术 TCP/IP.ppt
- 兰州工业学院:《计算机网络与通信 Computer Network & Communication》课程教学资源(PPT课件讲稿)第七章 Windows NT.ppt
- 兰州工业学院:《计算机网络与通信 Computer Network & Communication》课程教学资源(PPT课件讲稿)第八章网络安全技术 Safety Technology of Network.ppt
- 华南农业大学:《面向对象的程序设计》 第九章 多态性.ppt
- 华南农业大学:《面向对象的程序设计》 第一章 Hello Java.ppt
- 华南农业大学:《面向对象的程序设计》 第二章 数据与表达式.ppt
- 华南农业大学:《面向对象的程序设计》 第三章 使用类和对象.ppt