文档详情

数据结构与算法-排序.doc

发布:2016-12-16约6.94千字共12页下载文档
文本预览下载声明
《数据结构与算法》实验报告 班级学号 姓 名 实验周次 实验日期 xxxxx xxxxxx xxxxxx 2015年10月 28 日 实验02:排序 一、实验目的 1.掌握各种常用排序方法的特点及其存储的方式。 2.掌握各种排序算法的要求、方法和过程。 3.SortDemo.exe中的所有排序均是升序排列,但完成本实验时,学号为单号的同学:排序时要求升序排列;学号为双号的:排序时要求降序排列。 3、实验报告电子稿和打印稿及其它提交方面的要求同实验01。 四、运行结果 图2-1 随机产生一批整数并快速排序 图2-2 随机排列表中元素并希尔排序 图2-3 随机排列表中元素并希尔排序 图2-4 随机排列表中元素并归并排序 五、参考程序 #include stdio.h #include stdlib.h #include time.h #define MAX 50 // 顺序表结构体 typedef struct { int s[MAX]; // 存放一批随机整数,数组大小MAX不能扩充 int length; // 当前表中元素的个数 } SeqList; // 功能菜单 void menu() { printf(\n\t*************排------序*************\n); printf(\t* 1 随机产生一批整数 *\n); printf(\t* 2 手动输入一批整数 *\n); printf(\t* 3 将表中数据随机化 *\n); printf(\t* 4 快速排序 *\n); printf(\t* 5 希尔排序 *\n); printf(\t* 6 堆排序 *\n); printf(\t* 7 归并排序 *\n); printf(\t* 8 依次显示表中所有数据 *\n); printf(\t* 0 退出程序 *\n); printf(\t************************************\n); } /* 初始化一个空的顺序表 */ SeqList *init() { // 开辟顺序表空间 SeqList *p=(SeqList *)malloc(sizeof(SeqList)); // 设置顺序表的初始长度为0 p-length=0; // 返回整个顺序表的(起始)地址 return p; } /* 随机产生一批整数到线性表中 */ void randGen(SeqList *p) { int num, i; printf(请输入元素个数(=%d):\n, MAX-1); scanf(%d, num); srand((int)time(0)); if(num = MAX) { // 随机产生num个整数存入顺序表中(从1号单元开始存放,0号单元留作“哨兵”) for(i=1; i=num; i++) p-s[i]=1+(int)(100.0*rand()/(RAND_MAX+1.0)); p-length=num; printf(顺序表中已成功放入%d个整数!\n, num); } else printf(顺序表空间不够,请重新输入元素个数!\n); } /* 手动输入一批整数到线性表中 */ void manInput(SeqList *p) { int num, i; printf(请输入元素个数(=%d):\n, MAX-1); scanf(%d, num); printf(请输入%d个整数:\n, num); if(num = MAX-1) { // 输入num个整数存入顺序表中(从1号单元开始存放,0号单元留作“哨兵”) for(i=1; i=num; i++) scanf(%d, (p-s[i])); p-length=num; printf(顺序表中已成功输入%d个整数!\n, num); } else printf(顺序表空间不够,请重新输入元素个数!\n); } /* 将顺序表中现有元素打乱为随机排列 */ void randomizeList(SeqList *p) { int i, selectLoc, tmp;
显示全部
相似文档