数据结构课程设计-排序与查找(19页).doc
《数据结构课程设计-排序与查找(19页).doc》由会员分享,可在线阅读,更多相关《数据结构课程设计-排序与查找(19页).doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-数据结构课程设计-排序与查找-第 19 页北京信息科技大学课程设计报告课程名称 数据结构课程设计 题 目 排序与查找 指导教师 设计起止日期 设计地点 系 别 信息管理学院 专 业 _信息管理与信息系统_姓名/学号_鲁丹2012012108_1. 课程实践目的:通过本实践使学生对各类排序算法有更深入的了解,在实际应用中学会使用排序算法解决具体问题。2. 课程实践内容:a) 随机产生20个0100之间的整数,允许有重复b) 分别利用直接插入排序、直接选择排序、快速排序、双向起泡排序对这20个数进行排序(递增递减均可),并统计在各种排序方法中关键字的比较次数,最后输出各类排序方法的排序结果及关键
2、字的比较次数。提示:双向起泡排序是对标准起泡排序算法的改进,该方法第一次自上而下进行“起泡”,使最大元素“下沉”到底,第二次自下而上进行“起泡”,使最小元素“上浮”到顶,之后又重复上述过程,每趟起泡后都会相应缩小下一趟的起泡排序区间,直至排序完成。起泡期间可以通过对某趟“起泡”的“最后交换位置”进行记忆,以尽可能快地缩短下一趟的“起泡”区间。c) 用折半查找法在前面的已排好序的数据表上查找,是否有此数,如有,输出其序号。如没有,在屏幕给出提示信息。3. 实践步骤:#include#include#include#define N 100#define OK 1#define ERROR 0#d
3、efine LIST_INIT_SIZE 100#define LISTINCREMENT 10#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int ElemType;typedef structElemType *elem;int length; int listsize; List;Status InitList(List &L)L.elem=(ElemType * ) malloc(LIST_INIT_SIZE * sizeof(ElemType); L.length = 0; L.listsize=
4、LIST_INIT_SIZE; return OK;/InitListvoid Create(List &L, int n) int i; srand(time(NULL); for(i=0;in;i+) L.elemi=rand()%N; L.length+; printf(%d ,L.elemi); printf(n);int InsertSort(List L)int i,j,t,m;m=0;for(i=1;i=L.elemj) m+;else m+;while(j=0)&(tL.elemj)L.elemj+1=L.elemj;j-;L.elemj+1=t;return m;int Se
5、lectSort(List L)int i,j,k,min,t=0;for(i=0;iL.length;i+)min=i;for(j=i+1;jL.length;j+)if(L.elemjL.elemmin)min=j;t+;else t+;if(min!=i)k=L.elemi;L.elemi=L.elemmin;L.elemmin=k;return t;int QuickSort(List L,int s,int t) int i=s,j=t,count4=0; if(si&L.elemj=L.elem0)j-;count4+; if(ij) L.elemi=L.elemj; i+; wh
6、ile(ij&L.elemi=L.elem0)i+;count4+; if(ij) L.elemj=L.elemi; j-; while(ii;j-)if(L.elemj-1L.elemj)flag=1;int m;m=L.elemj;L.elemj=L.elemj-1;L.elemj-1=m;t+;else t+;return t; void display(List L)int i;for(i=0;iL.length;i+) printf(%d ,L.elemi); printf(n);void main() List L;int low,high,a,b,c,d; InitList(L)
7、;printf(请将随机产生的0-100间的20个数输出:n);Create(L,20);printf(n直接插入法排序输出的顺序表为:n); a=InsertSort(L); display(L); printf(此排序法关键字比较的次数为:%dn,a); printf(n直接选择法排序输出的顺序表为:n);b=SelectSort(L);display(L);printf(此排序法关键字比较的次数为:%dn,b); printf(n快速排序输出的顺序表为:n);c=QuickSort(L,1,20);display(L);printf(此排序法关键字比较的次数为:%dn,c);printf
8、(n双向起泡法排序输出的顺序表为:n);d=BubbleSort(L);display(L);printf(此排序法关键字比较的次数为:%dn,d);1. #includestdio.h2. #includestdlib.h3. #includestring.h4. #includetime.h5. #includelimits.h6. #defineMAXITEM10007. typedefintKeyType,ElemType;8. intcount1=0,count2=0,count3=0,count4=0,count5=0,count6=0;9. intswap1=0,swap2=0,
9、swap3=0,swap4=0,swap5=0,swap6=0;10. typedefstructrec11. 12. KeyTypekey;13. ElemTypedata;14. sqlistMAXITEM;15. 16. voidgennum(sqlistr,sqlistt,intn)17. 18. inti;19. srand(unsigned)time(NULL);20. for(i=1;i=n;i+)21. ti.key=rand()%100;22. ri.key=ti.key;23. 24. 25. 26. voidini(sqlistr,sqlistt,intn)27. 28.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 排序 查找 19
限制150内