桂林航天工业学院学生实验报告(七)
课程名称 数据结构(A) 实验项目名称 查找(2学时) 实验日期 专业班级 实验成绩 2024年12月18日 2024计算机应用技术 开课教学单位及实验室 学生姓名 指导教师 劳传媛 计算机科学与工程学院 学号 一、实验目的 1. 掌握各种查找的基本思想。 2. 掌握各种查找方法的算法实现。 3. 掌握各种查找方法的好坏及所适应的不同场合。 二、实验内容 1. 随机产生10000个整数。 2. 用顺序查找算法查找给定的数据,并统计查找的次数。 3. 用二分查找算法查找给定的数据,并统计查找的次数。 4. 设计一个选择式菜单,以菜单方式实现各种操作。 三、实验代码 #include \ #include \ #include \ #include \ const int size=1000; typedef long RecType; typedef struct { //顺序查找 void SeqSearch(SqTable R,RecType k,int &i,int &j) { } void print(SqTable R,int n) RecType rec[size+1]; int n; } SqTable; { } //排序 void sort(SqTable &R,int n) { } //折半查找 int BinSearch(SqTable R,RecType k,int &j) { } void main() { SqTable R,A; RecType x; int i,j,n; int k; do { printf(\ printf(\ 查找子系统\\n\ printf(\ printf(\ 1----产生数据 *\\n\ printf(\ 2----顺序查找 *\\n\ printf(\ 3----二分查找 *\\n\ printf(\ 4----打印数据 *\\n\ printf(\ 0----返 回 *\\n\ printf(\ printf(\ 请选择菜单项(0-4):\ scanf(\ switch(k) { case 1://随机产生数据 printf(\请输入要产生随机数的个数(n<=%d)n= \ scanf(\ for (i=1;i<=n;i++) A.rec[i]=R.rec[i]=rand(); srand((unsigned)time( NULL )); } A.n=R.n=n; break; printf(\请输入要查找的关键字:\ scanf(\ SeqSearch(R,x,i,j); if (i==0) printf(\没有此数据!!!\ else printf(\在 %d 个下标,第 %d 次找到。\ break; sort(A,n); print(A,n); printf(\请输入要查找的关键字:\ scanf(\ j=0; i=BinSearch(A,x,j); if (i==0) printf(\没有此数据!!!\ else printf(\在 %d 个下标,第 %d 次找到。\ break; print(A,n); case 2://顺序查找 case 3://二分查找 case 4: } }while (k!=0); 四、实验运行结果和分析
桂林航天工业学院学生实验报告(八)
课程名称 数据结构(A) 实验项目名称 排序(4学时) 实验日期 专业班级 实验成绩 2024年12月21日 2024年12月23日 2024计算机应用技术 开课教学单位及实验室 学生姓名 指导教师 劳传媛 计算机科学与工程学院 学号 一、实验目的 1. 掌握各种排序的基本思想。 2. 掌握各种排序方法的算法实现。 3. 掌握各种排序方法的优劣及所花费时间的计算。 4. 掌握各种排序方法所适应的不同场合。 二、实验内容 1. 用随机函数产生50000个数据。 2. 用直接插入、二分插入、冒泡、直接选择等排序方法排序,并统计每一种排序所花费的时间。 3. 设计一个选择式菜单,以菜单方式实现各种操作。 三、实验代码 1. 算法提示 为了产生随机数,要用到stdlib.h中的两个函数srand()和rand()来设置随机种子及产生随机数。为了计时,要用到time.h中的两个函数time()和difftime(),time()用于截取计算机的时钟的时间,difftime()用于得到两次时钟间隔的时间(秒)。每一种排序方法写成函数形式,用主函数调用它,为了查看排序前后的效果,可写一个输出数组的函数,在排序前后分别调用它,可以看到排序前后的结果。 2. 算法实现 #include \ #include \ #include \ #include \ #include \ const int N=50000; #define ElemType int void insertsort(ElemType R[],int n) //直接插入排序 { } void BinaryInsertSort(ElemType R[],int n) //二分插入排序 { } void Bubblesort(ElemType R[],int n) //冒泡排序 { } void selectsort(ElemType R[],int n) //直接选择排序 { } void print(ElemType R[],int n) //打印数组 { for(int i=0;i