40饶畅实验五.docVIP

  • 6
  • 0
  • 约7.54千字
  • 约 12页
  • 2017-09-17 发布于江苏
  • 举报
40饶畅实验五

实验五 查找与排序 一、实验目的 实验课程名:数据结构与算法 专业班级: 11计算机科学与技术(2)班 学号: 201140410240 姓名: 饶畅 实验时间: 12. 实验地点: K4-209 指导教师: 祁文青 1、掌握查找的不同方法,并能用高级语言实现查找算法。 2、熟练掌握顺序表的查找方法和有序顺序表的折半查找算法以及静态查找树的构造方法和查找算法。 3、掌握二叉排序树的生成、插入、删除、输出运算。 4、掌握常用的排序方法,并能用高级语言实现排序算法。 5、深刻理解排序的定义和各种排序方法的特点,并能加以灵活运用。 6、了解各种方法的排序过程及依据的原则,并掌握各种排序方法的时间复杂度的分析方法。 二 .实验内容 1、顺序表的顺序查找 (1)程序清单:#includestdio.h #define MAXL 10 typedef int KeyType; typedef struct { KeyType key; }NodeType; typedef NodeType SeqList[MAXL]; int SeqSearch(SeqList R,int n,KeyType k) { int i=0; while(inR[i].key!=k) { printf(%-3d,R[i].key); i++; } if(i=n) return -1; else { printf(%d,R[i].key); return i; } } void main(){ SeqList R; int n=10; KeyType k; int a[10],i; printf(输入数字:\n); for(i=0;in;i++) scanf(%d,a[i]); for(i=0;in;i++) R[i].key=a[i]; printf(\n); printf(输入k:); scanf(%2d,k); if((i=SeqSearch(R,n,k))!=-1) printf(\n元素%d的位置是%d\n,k,i+1); else printf(k不存在\n); printf(40饶畅\n); } (2)运行结果: 2、有序顺序表的二分查找的算法 (1)程序清单:#includestdio.h #define N 100 int Found(int a[],int x,int y) { int h,r,m; h=0;r=y-1;m=(h+r)/2; while(h=rx!=a[m]) if(xa[m]) {r=m-1;m=(h+r)/2;} else {h=m+1;m=(h+r)/2;} if(hr) return -1; /*查找失败,返回-1*/ return m; /*查找成功,返回有效下标m */ } // Search_Bin void main() { int m,a[N],i,x,n; printf(请输入m=:); scanf(%d,m); printf(请按从小到大的顺序输入一组数:); for(i=0;im;i++) scanf(%d,a[i]); printf(请输入要查找的数:); scanf(%d,x); n=Found(a,x,m); if(n==-1) printf(查找失败); else printf(\n位置是%d\n,n); printf(40饶畅\n); } (2)运行结果: 3、二叉排序树的查找、插入、删除等基本操作的实现 (1)程序清单:#includeiostream.h typedef struct TreeNode { int key; struct TreeNode *left; struct TreeNode *right; }treeNode; class BiSortTree { public: BiSortTree(void); void desplayTree(void); void insertTree(int key); deleteTree(int key); treeNode* searchTree(int key); ~BiSortTree(); private: treeNode* buildTree(treeNode* head,int number); treeNode* search(treeNo

文档评论(0)

1亿VIP精品文档

相关文档